概率DP hdu 3366 .
题意:一个人被困在一个城堡里,面前有n条路,他自己有m百万元,选择每一条路都有p概率通过,q概率遇到士兵,1-p-q概率道路不通;遇到士兵的话需要上交1百万,如果不够钱,则被杀死,问的是最优情况下多少概率可以成功逃脱
思路是首先处理一下数据,想要最优肯定是在不被杀死的情况下越早走出越好,那就要求尽量不要碰到士兵,所以应该先对数据按照p/q排序一下,这样可以保证不死的概率最大,然后通过概率dp的方程即可得解
dp[i][j]代表第i条路还有j百万的情况
第i条路逃脱的情况是dp[i][j]*pi,第i条路碰到士兵并且不被杀死的情况可以推导出dp[i+1][j-1]的情况qi*dp[i][j],第i条路不通折返的情况是dp[i][j]*(1-pi-qi)
注意:因为概率是每次+=,所以要记得将dp数组清零
————————————————
版权声明:本文为CSDN博主「WShuo97」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/kuhuaishuxia/article/details/52042586
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=+;
struct node
{
double p,q;
}a[maxn];
double dp[maxn][maxn];
bool cmp(node x,node y)
{
return x.p*y.q>x.q*y.p;
}
int main()
{
int t;
scanf("%d",&t);
for(int T=; T<=t; T++){
int n,m;
scanf("%d%d",&n,&m);
for(int i=; i<=n; i++){
scanf("%lf%lf",&a[i].p,&a[i].q);
}
sort(a+,a++n,cmp);
memset(dp,,sizeof(dp));
dp[][m]=1.0;
double ans=;
for(int i=;i<=n;i++)
for(int j=m;j>=;j--){
dp[i+][j-]+=a[i].q*dp[i][j];
dp[i+][j]+=dp[i][j]*(-a[i].p-a[i].q);
ans+=dp[i][j]*a[i].p;
}
printf("Case %d: %.5lf\n",T,ans);
}
return ;
}
概率DP hdu 3366 .的更多相关文章
- 概率dp HDU 3853
H - LOOPS Time Limit:5000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit ci ...
- 概率dp HDU 4405
Aeroplane chess Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Sub ...
- [概率dp] hdu 5378 Leader in Tree Land
题意: 给你一颗以1位根节点的树.我们定义对于每一个子树,节点权值最大的权值记为这个子树的权值,为你将1~n放到这个树里 满足最大权值仅仅有k个的组合数是多少. 思路: 我们能够知道以每一个节点为子树 ...
- 概率DP HDU 4586 play the dice
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4586 解题思路: 只考虑第一次,获得的金币的平均值为sum/n.sum为所有色子的面的金币值相加. ...
- HDU 3366 Passage (概率DP)
题意:T组测试数据,一个人困在了城堡中,有n个通道,m百万money ,每个通道能直接逃出去的概率为 P[i] ,遇到士兵的概率为 q[i], 遇到士兵得给1百万money,否则会被杀掉,还有 1-p ...
- HDU 3076:ssworld VS DDD(概率DP)
http://acm.split.hdu.edu.cn/showproblem.php?pid=3076 ssworld VS DDD Problem Description One day, s ...
- HDU 4405:Aeroplane chess(概率DP入门)
http://acm.split.hdu.edu.cn/showproblem.php?pid=4405 Aeroplane chess Problem Description Hzz loves ...
- HDU 3853LOOPS(简单概率DP)
HDU 3853 LOOPS 题目大意是说人现在在1,1,需要走到N,N,每次有p1的可能在元位置不变,p2的可能走到右边一格,有p3的可能走到下面一格,问从起点走到终点的期望值 这是弱菜做的第 ...
- HDU 5781 ATM Mechine (概率DP)
ATM Mechine 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5781 Description Alice is going to take ...
随机推荐
- K3/Cloud 用插件打开一张已存在的单据
BillShowParameter billpara = new BillShowParameter();billpara.FormId = "SAL_SaleOrder";//单 ...
- SQLserver中存储图片
两种方式1.存放图片路径2.转换成2进制流(不过这样的话将很占用数据库空间)存路径的方式就很简单了,下面着重给出转换成2进制流的存入以及读取方法.存入:string FilePath="&q ...
- 机器学习笔记(十一)OCR技术的应用
1.介绍OCR: OCR(Photo optical character recognition 照片光学字符识别) 应用于读取电子照片中的文字. 2.算法思路: ① 识别文字区域: ② 字符切分: ...
- I+Me=完整的自我
这是这个系列的第二篇文章,如同第一篇一样,这篇文章会在24小时后删除. 之所以如此极端,因为我自认为这篇文章很有价值,不以这种方式,大家即使看了,也只会一带而过,不会真的汲取到营养. 这篇文章涉及的关 ...
- BFS-八数码问题与状态图搜索
在一个3*3的棋盘上放置编号为1~8的八个方块,每个占一格,另外还有一个空格.与空格相邻的数字方块可以移动到空格里.任务1:指定的初始棋局和目标棋局,计算出最少的移动步数:任务2:数出数码的移动序列. ...
- 构造和改变一个string的其他方法
构造一个string的其他方法: 1string s1(cp, n),cp为c风格数组名或一个指向C风格数组的指针,则执行的操作为拷贝从cp开始包括cp在内的接下来n个字符给s1,n的默认值为size ...
- windows下pycharm输入法跟随设置
参考网址:http://www.itdaan.com/blog/2018/05/20/90e64dae077f8ad7fa70bc9c3c8ab422.html
- 训练20191009 2018-2019 ACM-ICPC, Asia East Continent Finals
2018-2019 ACM-ICPC, Asia East Continent Finals 总体情况 本次训练共3小时20分钟,通过题数4. 解题报告 D. Deja vu of - Go Play ...
- 修改linux的MAC地址
命令修改 步骤如下,但不唯一: 1.临时性的修改: ①依次输入以下命令: /sbin/ifconfig eth0 down /sbin/ifconfig eth0 hw ether 00:0C:29: ...
- grunt里面将es6转为es5,遇到的坑
今天看了一下grunt的官方文档,就按照教程来自己创建一个demo,发现grunt要把es6转化为es5需要安装babel,然后就按照grunt-babel的文档进行了一系列操作,等我要兴致勃勃的运行 ...