Codeforces Round #301 (Div. 2) D(概率dp)
来源:互联网 发布:php web服务器搭建 编辑:程序博客网 时间:2024/06/10 19:03
题意:石头剪刀布游戏,给你r个石头,s个剪刀,p个布,问你最后只剩下单个种类的概率分别是多少;
思路:很简单的概率dp,用dp[r][s][p] 表示还剩下r个石头,s个剪刀,p个布的概率,那么最终我们只要分别累加 dp[r][0][0],dp[[0][s][0],dp[0][0][p]就OK啦!
代码如下:
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const int N = 105;double dp[N][N][N];int r, s, p;int main(){while(~scanf("%d%d%d", &r, &s, &p)){memset(dp, 0, sizeof(dp));dp[r][s][p] = 1;for(int i = r; i >= 0; i--){for(int j = s; j >= 0; j--){for(int k = p; k >= 0; k--){if(!i && !j || !i && !k || !j && !k) continue;double ans = dp[i][j][k];double tmp = i*j + i*k + j*k;if(i) dp[i-1][j][k] += ans*double(i*k)/tmp;if(j) dp[i][j-1][k] += ans*double(i*j)/tmp;if(k) dp[i][j][k-1] += ans*double(j*k)/tmp;}}}double a = 0, b = 0, c = 0;for(int i = 1; i <= r; i++) a += dp[i][0][0];for(int j = 1; j <= s; j++) b += dp[0][j][0];for(int k = 1; k <= p; k++) c += dp[0][0][k];printf("%.9lf %.9lf %.9lf\n", a, b, c);}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 #301 (Div. 2) -- D. Bad Luck Island (概率DP)
- Codeforces Round #301 (Div. 2) D. Bad Luck Island(概率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 #105 (Div. 2) (D. Bag of mice(概率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 #293 (Div. 2)D. Ilya and Escalator(概率DP)
- 黑马程序员———单例模式
- XSS跨站测试代码大全
- 第十四周项目之oppo 电子词典
- google 字体开源
- 数码时钟
- Codeforces Round #301 (Div. 2) D(概率dp)
- HTML入门简介
- Kafka源码和文档阅读与体会(一)
- Socket send函数和recv函数详解
- C语言中const的用法
- [leetcode] Min Stack
- git 换行符问题,统一linux风格
- 黑马程序员——越过泛型机制
- ubuntu的安装软件问题:E:Could not get lock /var/lib/apt/lists/lock - open (11: Resource temporarily unavaila