Codeforces Round #105 (Div. 2) D 概率DP
2014-11-16 21:20
375 查看
题目
呃 琢磨了半天还是琢磨出来了,题意有些模糊哈,有w个白色物品,b个黑色物品,A,B轮着抽,A先开始,谁先抽到白色谁赢,若最终都没有抽到白色 则算B赢,抽出来的物品不会放回去,B抽完以后 物品还会有一个额外产生丢失,问A赢的概率为多少
依旧是以目标状态为边界,当前状态到目标状态所需要的概率为 方程
dp[i][j] 代表当前轮到A抽的时候,还有i个白色的j个黑色的A赢的概率为多少
则当前转移可能有四种
1:A抽到了白色的,那么直接赢了,接下来不需要继续,所以没有与其它状态方程有联系
2:A抽到了黑色的,下一次B抽到了白色的 那么A输了,输了就结束了 对下面我们要求的答案无影响,所以不管这一个
3:A抽到了黑色,下一次B又抽到了黑色,且丢失的为白色的,也就是dp[i - 1][j - 2],因为这个都没有产生绝对赢输的状态,所以会对下面的方程转移递推有帮助,所以需要联系上
4:A抽到了黑色,下一次B抽到了黑色,且丢失的为黑色,也就是dp[i][j - 3],这个也没有产生绝对的输赢,所以还是需要联系上
那么边界dp[0][0] = 0,因为轮到A的时候没有可以抽的了,表示都抽光了,这时候按照题目条件算B赢的
还有dp[i][0]轮到A抽的时候 黑色的已经没有了,那么A只能抽白色的 所以肯定赢咯
还有dp[0][j]轮到A的时候白色的没有了,所以必输
呃 琢磨了半天还是琢磨出来了,题意有些模糊哈,有w个白色物品,b个黑色物品,A,B轮着抽,A先开始,谁先抽到白色谁赢,若最终都没有抽到白色 则算B赢,抽出来的物品不会放回去,B抽完以后 物品还会有一个额外产生丢失,问A赢的概率为多少
依旧是以目标状态为边界,当前状态到目标状态所需要的概率为 方程
dp[i][j] 代表当前轮到A抽的时候,还有i个白色的j个黑色的A赢的概率为多少
则当前转移可能有四种
1:A抽到了白色的,那么直接赢了,接下来不需要继续,所以没有与其它状态方程有联系
2:A抽到了黑色的,下一次B抽到了白色的 那么A输了,输了就结束了 对下面我们要求的答案无影响,所以不管这一个
3:A抽到了黑色,下一次B又抽到了黑色,且丢失的为白色的,也就是dp[i - 1][j - 2],因为这个都没有产生绝对赢输的状态,所以会对下面的方程转移递推有帮助,所以需要联系上
4:A抽到了黑色,下一次B抽到了黑色,且丢失的为黑色,也就是dp[i][j - 3],这个也没有产生绝对的输赢,所以还是需要联系上
那么边界dp[0][0] = 0,因为轮到A的时候没有可以抽的了,表示都抽光了,这时候按照题目条件算B赢的
还有dp[i][0]轮到A抽的时候 黑色的已经没有了,那么A只能抽白色的 所以肯定赢咯
还有dp[0][j]轮到A的时候白色的没有了,所以必输
double dp[1000 + 55][1000 + 55]; int w,b; void init() { memset(dp,0.00,sizeof(dp)); } bool input() { while(cin>>w>>b) { return false; } return true; } void cal() { dp[0][0] = 0.00; for(int i=1;i<=w;i++)dp[i][0] = 1.00; for(int j=1;j<=b;j++)dp[0][j] = 0.00; for(int i=1;i<=w;i++) { for(int j=1;j<=b;j++) { dp[i][j] = (i * 1.0)/(i + j)*1.0; if(j >= 2) dp[i][j] += dp[i - 1][j - 2] * (j * 1.0)/(i + j) * (j - 1) * 1.0/(i + j - 1) * (i * 1.0)/(i + j - 2); if(j >= 3) dp[i][j] += dp[i][j - 3] * (j * 1.0)/(i + j) * (j - 1)*1.0/(i + j - 1) * (j - 2) * 1.0/(i + j - 2); } } printf("%.10lf\n",dp[w][b]); } void output() { } int main() { while(true) { init(); if(input())return 0; cal(); output(); } return 0; }
相关文章推荐
- Codeforces Round #105 (Div. 2) (D. Bag of mice(概率DP))
- 【Codeforces Round 331 (Div 2)D】【DP 记忆化搜索 期望DP区间性质 好题】Wilbur and Trees 砍树随机从右从左概率左倒右倒的期望底面覆盖长度
- Codeforces Round #105 D. Bag of mice 概率dp
- 【Codeforces Round 333 (Div 2)E】【期望DP概率做法 树状数组转前缀和】Kleofáš and the n-thlon n场比赛m个人获得总名次的期望
- Codeforces Round #301 (Div. 2) D. Bad Luck Island 概率DP
- Codeforces Round #301 (Div. 2)D (概率dp)
- Codeforces Round #293 (Div. 2) D. Ilya and Escalator(概率DP)
- 【Codeforces Round 363 (Div 2) E】【概率DP 期望DP 逆推等价法】LRU Cache替换LRU原则超多步数后每个数据在Cache中的概率
- Codeforces Round #105 D. Bag of mice 概率dp
- 【Codeforces Round 275 (Div 2)E】【状压DP 概率DP求期望 线性相加思想 二进制系统函数】Game with Strings n个串目标串随机猜位置随机的猜出答案的期望步
- Codeforces Round #284 (Div. 2): D. Name That Tune(概率DP)
- Codeforces Round #144 (Div. 1), problem: (B) Table DP 组合数学
- Codeforces Round #Pi (Div. 2) F. Mausoleum dp
- 【Codeforces Round 273 (Div 2)D】【DP 滚动数组】 Red-Green Towers 两种颜色积木拼搭最高锯齿楼每层颜色相同的总方案数
- Codeforces Round #360 (Div. 2) E. The Values You Can Make DP
- Codeforces Round #396(Div. 2)C. Mahmoud and a Message【dp】
- Codeforces Round #119 (Div. 2) Cut Ribbon(DP)
- Codeforces Round #261 (Div. 2) E. Pashmak and Graph (sorting + dp)
- Codeforces Round #105 (Div. 2) ABCDE
- Codeforces Round #383 (Div. 2) D. Arpa's weak amphitheater and Mehrda 4000 d's valuable Hoses —— DP(01背包)