题号 标题 已通过代码 题解/讨论 通过率 团队的状态
A Blackjack 点击查看 背包DP 32/109 补好了
B Coffee Chicken 点击查看 进入讨论 738/2992  通过
C Gifted Composer 点击查看 哈希 12/64 未通过
D Han Xin and His Troops 点击查看 进入讨论 602/4072  通过
E Hilbert Sort 点击查看 进入讨论 508/1681  通过
F Popping Balloons 点击查看 进入讨论 236/920  通过
G Road Construction 点击查看 进入讨论 65/638  通过
H Stammering Chemists 点击查看 进入讨论 810/1595  通过
I Travel Dream 点击查看 进入讨论 1/191 未通过
J Wood Processing 点击查看 进入讨论 169/1204  通过

A Blackjack

题意:

牌堆里有n($n <=  500$)张牌, 每张牌都有一个值,你顺序从牌堆里抽牌,当手中的牌的值和在$(a, b]$时,可以胜利,没有出现就是失败。

现在随机打乱牌堆里的牌的顺序,问获胜的概率。

思路:

枚举以每个点为结尾获胜的情况。

用$dp[i][j] $ 表示取$i$个,$sum$为$j$的方案数。

每次操作的时候,去掉枚举的那个的影响,数出合法个数。

#include <algorithm>
#include <iterator>
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <iomanip>
#include <bitset>
#include <cctype>
#include <cstdio>
#include <string>
#include <vector>
#include <stack>
#include <cmath>
#include <queue>
#include <list>
#include <map>
#include <set>
#include <cassert>
#include <unordered_map>
// #include<bits/extc++.h>
// using namespace __gnu_pbds;
using namespace std;
#define pb push_back
#define fi first
#define se second
#define debug(x) cerr<<#x << " := " << x << endl;
#define bug cerr<<"-----------------------"<<endl;
#define FOR(a, b, c) for(int a = b; a <= c; ++ a) typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll; const int inf = 0x3f3f3f3f;
const ll inff = 0x3f3f3f3f3f3f3f3f;
const int mod = ; template<typename T>
inline T read(T&x){
x=;int f=;char ch=getchar();
while (ch<''||ch>'') f|=(ch=='-'),ch=getchar();
while (ch>=''&&ch<='') x=x*+ch-'',ch=getchar();
return x=f?-x:x;
}
/**********showtime************/
const int maxn = ;
int val[maxn];
ld dp[maxn][maxn];
ld fac[maxn];
int n,a,b;
void add(int v) {
for(int i=n; i>=; i--) {
for(int j=v; j<=b; j++){
dp[i][j] += dp[i-][j - v];
}
}
}
void sub(int v) {
for(int i=; i<=n; i++) {
for(int j=v; j<=b; j++){
dp[i][j] -= dp[i-][j - v];
}
}
}
int main(){
scanf("%d%d%d", &n, &a, &b);
for(int i=; i<=n; i++) scanf("%d", &val[i]);
fac[] = ;
for(int i=; i<=n; i++) fac[i] = fac[i-] * i;
dp[][] = ;
for(int i=; i<=n; i++) add(val[i]);
ld sum = ;
for(int i=; i<=n; i++) {
sub(val[i]);
for(int j = ; j<n; j++) {
for(int k = max(, a-val[i] + ); k <= min(a, b-val[i]); k++) {
sum += dp[j][k] * fac[j] * fac[n - j - ];
}
}
add(val[i]);
}
sum = sum / fac[n];
printf("%.12Lf\n",sum);
return ;
}

2019nc#10的更多相关文章

  1. Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级

    Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 5.安装Database软件 5. ...

  2. Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作

    Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 1.实施前准备工作 1.1 服务器安装操 ...

  3. ArcGIS 10.0紧凑型切片读写方法

    首先介绍一下ArcGIS10.0的缓存机制: 切片方案 切片方案包括缓存的比例级别.切片尺寸和切片原点.这些属性定义缓存边界的存在位置,在某些客户端中叠加缓存时匹配这些属性十分重要.图像格式和抗锯齿等 ...

  4. CI Weekly #10 | 2017 DevOps 趋势预测

    2016 年的最后几个工作日,我们对 flow.ci Android & iOS 项目做了一些优化与修复: iOS 镜像 cocoapods 版本更新: fir iOS上传插件时间问题修复: ...

  5. 10个最好用的HTML/CSS 工具、插件和资料库

    大家在使用HTML/CSS开发项目的过程中,有使用过哪些工具,插件和库?下面介绍的10种HTML/CSS工具,插件和资料库,是国外程序员经常用到的. Firebug Lite FirebugLite ...

  6. 【Win 10 应用开发】启动远程设备上的应用

    这个功能必须在“红石-1”(build 14393)以上的系统版中才能使用,运行在一台设备上的应用,可以通过URI来启动另一台设备上的应用.激活远程应用需要以下前提: 系统必须是build 14393 ...

  7. 在Ubuntu 16.10安装mysql workbench报未安装软件包 libpng12-0错误

    1.安装mysql workbench,提示未安装软件包 libpng12-0 下载了MySQL Workbench 6.3.8   在安装的时候报错: -1ubu1604-amd64.deb 提示: ...

  8. Ubuntu 16.10 安装byzanz截取动态效果图工具

    1.了解byzanz截取动态效果图工具 byzanz能制作文件小,清晰的GIF动态效果图,不足就是,目前只能通过输入命令方式来录制. byzanz主要的参数选项有: -d, --duration=SE ...

  9. Ubuntu 16.10 安装KolourPaint 4画图工具

    KolourPaint 4画图工具简单实用,可以绘画.视频处理和图标编辑: • 绘画:绘制图表和“手绘” • 视频处理:编辑截图和照片;应用特效 • 图标编辑:绘画剪贴和标识透明化 1.在Ubuntu ...

随机推荐

  1. android 界面提示框架WisdomProgressHUD,为金典而生

    一:简述 今天给android开发者们,推荐一个金典的界面提示框架WisdomProgressHUD,使用简洁方便. WisdomProgressHUD 是一个半透明的 HUD 指示器. Wisdom ...

  2. Chrome 使用 Evernote 插件

    Chrome 插件不能登印象笔记进行裁剪,被困扰有段时间了.昨天偶然在知乎上找到了解决方法: 链接:https://www.zhihu.com/question/20340803/answer/291 ...

  3. Thinkphp 5.1.7 parseData缺陷导致insert/update注入 分析

    目录 环境搭建 分析 参考 环境搭建 $ composer create-project topthink/think thinkphp-5.1.7 修改composer.json 5.1.* =&g ...

  4. 彻底理解kubernetes CNI

    kubernetes各版本离线安装包 CNI接口很简单,特别一些新手一定要克服恐惧心里,和我一探究竟,本文结合原理与实践,认真读下来一定会对原理理解非常透彻. 环境介绍 我们安装kubernetes时 ...

  5. go 学习笔记之工作空间

    搭建好 Go 的基本环境后,现在可以正式开始 Go 语言的学习之旅,初学时建议在默认的 GOPATH 工作空间规范编写代码,基本目录结构大概是这个样子. . |-- bin | `-- hello.e ...

  6. linux自学

    Linux文件与目录管理   所有不太会的命令,可以用man +命令,查看相关解释文档   绝对路径:从根路径写起的路径,/usr/local 相对路径:例如:路径a:~/demo/test  路径b ...

  7. Apache ActiveMQ任意文件写入漏洞(CVE-2016-3088)复现

    Apache ActiveMQ任意文件写入漏洞(CVE-2016-3088)复现 一.漏洞描述 该漏洞出现在fileserver应用中,漏洞原理:ActiveMQ中的fileserver服务允许用户通 ...

  8. zookeeper基本知识入门(一)

    之前我们在搭建hadoop分布式环境的时候用到过Zookeeper注册hadoop服务.那么到底Zookeeper在分布式环境中发挥了什么作用呢,这次我们就来讨论这个问题. 在分布式系统中通常都会有多 ...

  9. [实践]redhat linux5.3安装tomcat

    1.安装准备 操作系统:RedHat 5 (自带apache2.2.3) 安装tomcat前首先要安装jdk: 查看系统是否安装了jdk或tomcat的命令: rpm -qa | grep java ...

  10. Java并发编程实战笔记—— 并发编程1

    1.如何创建并运行java线程 创建一个线程可以继承java的Thread类,或者实现Runnabe接口. public class thread { static class MyThread1 e ...