hdu4815 (概率DP)
2015-08-10 20:19
288 查看
由于没有专门练过概率DP , 场上硬推的,由于一点小失误WA了两发 。
我们很容易求出来d[i][j],表示前i道题,得分为j的概率 。 这样,最终打完所有题目之后猴子得任意分数的概率我们就知道了,老虎要想赢就要至少得和他一样的分数,那么就很好办了,从0~max分,不断相加概率,当概率大于P时的分数就是答案 。
细节见代码:
我们很容易求出来d[i][j],表示前i道题,得分为j的概率 。 这样,最终打完所有题目之后猴子得任意分数的概率我们就知道了,老虎要想赢就要至少得和他一样的分数,那么就很好办了,从0~max分,不断相加概率,当概率大于P时的分数就是答案 。
细节见代码:
#include<bits/stdc++.h> using namespace std; typedef long long ll; const int maxn = 50; const double INF = 10000000.0; int T,n,a[maxn]; double p,d[50][40000+100]; int main() { scanf("%d",&T); while(T--) { scanf("%d%lf",&n,&p); ll sum = 0; for(int i=1;i<=n;i++) { scanf("%d",&a[i]); sum += a[i]; } memset(d,0,sizeof(d)); d[0][0] = 1.0; for(int i=1;i<=n;i++) { for(int j=0;j<=sum;j++) { if(j >= a[i]) d[i][j] += d[i-1][j-a[i]]/2; d[i][j] += d[i-1][j]/2; } } int ans; double pp = 0.0; for(int i=0;i<=sum;i++) { pp += d [i]; if(pp > p || fabs(pp-p) < 1e-6) { ans = i ; break; } } printf("%d\n",ans); } return 0; }
相关文章推荐
- 19个必须知道的Visual Studio快捷键
- 计算机网络--TCP协议中的三次握手和四次挥手(图解)
- asp.net中套用母版页之后的findcontrol
- 机器学习、深度学习的相关资料
- 事件传递机制整理
- 有三个参数的函数,一个为字符,两个为整数,第二个整数代表行数,第一个整数代表每行的字符的个数
- [c语言]冒泡排序升级版------选择排序简单版
- UI09_自定义cell
- C语言-Pointer(high)AndMacro
- spring读取资源文件时自定义数据类型转换---CustomEditorConfigurer
- 【HDU3652】【B-number】
- 八大排序算法(一)直接插入排序
- 基于64位CentOS6.4安装Tomcat8.0
- 附加库目录与附加包含目录
- FreeMarker 入门
- 【bzoj4031】 HEOI2015小Z的房间 矩阵树定理
- 扫盲文件完整性校验——关于散列值和数字签名
- 单片机IO口模拟SPI四种模式的程序
- LeetCode Find Minimum in Rotated Sorted Array系列
- LeetCode(25)Reverse Nodes in k-Group