CodeForces 148D: Bag of mice
类型:概率DP
题意:袋子里有黑球白球,公主和恶龙依次从里面拿。公主先。恶龙拿的时候,会额外掉出去一个(这个不参与胜负评判)。谁先拿到白球谁胜利。如果都拿完了都没人拿到,则判定恶龙胜。
思路:如图
代码:
#include <cstdio> #include <cstdlib> double p[1004][1004]; int main() { int w, b; while (scanf("%d%d", &w, &b) != EOF) { //其实可以放到外面只初始化一次 for (int i = 0; i <= b; i++) { p[0][i] = 0; } for (int i = 1; i <= w; i++) { for (int j = 0; j <= b; j++) { double sum = i+j+0.0; p[i][j] = i/sum; if (i+j >= 3 && j >= 2) { double remain = 0; if (j >= 3) { remain += ((j-2+0.0)/(sum-2))*p[i][j-3]; } remain += ((i+0.0)/(sum-2))*p[i-1][j-2]; p[i][j] += ((j+0.0)/sum) * ((j-1+0.0)/(sum-1.0)) * remain; } } } printf("%.10lf\n", p[w][b]); } return 0; }
posted on 2014-03-04 12:10 ShineCheng 阅读(175) 评论(0) 编辑 收藏 举报