CodeForces 148D Bag of mice(概率DP)
2016-03-16 21:15
176 查看
#include<iostream> #include<cstdio> #include<algorithm> #include<cstdlib> #include<cmath> #include<string.h> #include<cstring> #include<string> #include<map> #include<set> #include<vector> using namespace std; typedef long long ll; int ans[120]; #define sp system("pause") #define mt(dp) memset(dp,0,sizeof dp) double dp[1200][1200]; int main() { int w, b; cin >> w >> b; mt(dp); dp[w][b] = 1; double ans = 0; int sum = w + b; for (int i = 0; i <= sum; i++) { for (int j = 0; j <= i; j++) { if (w - j >= 0 && b - (i - j) >= 0 && sum - i != 0) ans += (dp[w - j][b - (i - j)] * 1.0*(w - j) / (sum - i)); /* if(w-j-1>=0) { dp[w-j-1][b-(i-j)]+=(dp[w-j][b-(i-j)]*(w-j)/(sum-i)); } */ if (b - (i - j) - 1 >= 0 && w - j >= 0) { dp[w - j][b - (i - j) - 1] += (dp[w - j][b - (i - j)] * (b - (i - j)) / (sum - i)); } } i++; if (i>sum)break; for (int j = 0; j <= i; j++) { if (b - (i - j) - 1 >= 0 && (w - j) >= 0 && sum - i != 0) { dp[w - j][b - (i - j) - 1] += (dp[w - j][b - (i - j)] * (b - (i - j)) / (sum - i)); } } i++; if (i>sum)break; for (int j = 0; j <= i; j++) { if (sum - i != 0) { if (w - j - 1 >= 0 && (b - (i - j)) >= 0) { dp[w - j - 1][b - (i - j)] += (dp[w - j][b - (i - j)] * (w - j) / (sum - i)); } if (b - (i - j) - 1 >= 0 && (w - j) >= 0) { dp[w - j][b - (i - j) - 1] += (dp[w - j][b - (i - j)] * (b - (i - j)) / (sum - i)); } } } } if (!w&&!b) printf("%.9lf\n", 0); else printf("%.10f\n", ans); //sp; return 0; }
相关文章推荐
- 欢迎使用CSDN-markdown编辑器
- JSP内置对象
- java7新特性之Diamond syntax
- Smarty的配置
- scrollview的相关问题
- 二维数组中的查找
- iOS设计之 表格UITableView 的参数与视图页面之间的相互传递
- 2016/3/16 高级查询 ①连接查询 ②联合查询 ③子查询 无关 相关
- [code]最长回文子串
- Java单例模式深入详解
- 排序算法小结
- Activity启动模式
- Codeforces Round #334 (Div. 2) B C D
- [DP 上下界最小流] BZOJ4200 [Noi2015]小园丁与老司机
- Android中常用的存储方式
- Android中ListView的几种常见的优化方法
- misc_register杂项设备
- 两个Hacker,专门Patch TObject
- js事件防止冒泡
- 并查集