Codeforces Round #301 (Div. 2) D 概率DP
来源:互联网 发布:郑州好玩软件科技公司 编辑:程序博客网 时间:2024/06/05 06:52
一个岛上住着三种生物,石头(R)、剪刀(S)和布(P)。两个不同的生物见面会打架,并且有一方死亡,已知各生物碰见的概率是一样的,求最后岛上只留下剪刀、石头、布的概率。
dp[r][s][p] : 石头,剪刀,布分别剩下r,s,p的概率这时,布和石头打一架,将转移到dp[r-1][s][p],而布和石头打架的概率是(p*r)/(r*s + s*p + p*r),
同理,dp[r][s][p]可以转移到状态dp[r][s-1][p] 和dp[r][s][p-1];
最后统计结果就行。
#include <cstdio>#include <iostream>#include <algorithm>using namespace std;double dp[110][110][110];double comlex (int a, int b, int c) { return (double)(a * b) / (a * b + b * c + c * a);}int main () { int R, S, P; cin >> R >> S >> P; dp[R][S][P] = 1.0; for (int r = R; r >= 0; r--) { for (int s = S; s >= 0; s--) { for (int p = P; p >= 0; p--) { if ((r == 0 && s == 0) || (s == 0 && p == 0) || (p == 0 && r == 0)) continue; if (r-1 >= 0) dp[r-1][s][p] += dp[r][s][p] * comlex(p, r, s); if (s-1 >= 0) dp[r][s-1][p] += dp[r][s][p] * comlex(r, s, p); if (p-1 >= 0) dp[r][s][p-1] += dp[r][s][p] * comlex(s, p, r); } } } double rocks = 0.0; double scissors = 0.0; double papers = 0.0; for (int r = 1; r<=R; r++) { rocks += dp[r][0][0]; } for (int s = 1; s<=S; s++) { scissors += dp[0][s][0]; } for (int p = 1; p<=P; p++) { papers += dp[0][0][p]; } printf ("%.9lf %.9lf %.9lf\n", rocks, scissors, papers); return 0;}
0 0
- Codeforces Round #301 (Div. 2)D (概率dp)
- Codeforces Round #301 (Div. 2) D 概率DP
- Codeforces Round #301 (Div. 2) D(概率dp)
- Codeforces Round #105 (Div. 2) D 概率dp
- Codeforces Round #105 (Div. 2) D 概率DP
- Codeforces Round #362 (Div. 2) D. Puzzles(概率dp)
- Codeforces Round #105 (Div. 2) D 概率dp
- Codeforces Round #301 (Div. 2)---D. Bad Luck Island(概率dp)
- 概率dp Codeforces Round #301 (Div. 2) D - Bad Luck Island
- Codeforces Round #301 (Div. 2) -- D. Bad Luck Island (概率DP)
- Codeforces Round #301 (Div. 2) D. Bad Luck Island(概率DP)
- Codeforces Round #301 (Div. 2)-D. Bad Luck Island(概率dp)
- Codeforces Round #301 (Div. 2) D. Bad Luck Island 概率dp
- Codeforces Round #293 (Div. 2) D. Ilya and Escalator (概率DP)
- Codeforces Round #293 (Div. 2)D. Ilya and Escalator(概率DP)
- Codeforces Round #293 (Div. 2)D.Ilya and Escalator——概率dp
- Codeforces Round #284 (Div. 2) D. Name That Tune 概率dp
- Codeforces Round #105 (Div. 2) (D. Bag of mice(概率DP))
- JQuery笔记-学习绚丽效果教你做之JQuery实战
- 用 C 语言编写 Windows 服务程序的五个步骤 .
- Android退出应用程序
- zookeeper 原理
- 从最大似然到EM算法浅解
- Codeforces Round #301 (Div. 2) D 概率DP
- 自定义View—实现滚动TextView(跑马灯)效果
- 面试题11:数值的整数次方
- system build folder Makefile & config
- Linux下安装SVN客户端
- Oracle执行计划详解
- Android中探讨自定义控件View
- poj3278(bfs)
- zookeeper 简介