codeforces 148D Bag of mice(概率DP)
2013-05-04 00:42
387 查看
题目链接:http://codeforces.com/problemset/problem/148/D
题意:n个白球m个黑球在一个袋子中。A、B两个人玩游戏。
(1)先拿到白球的人赢,游戏结束;
(2)A先拿;
(3)每次B拿完后,会有一个球自己跳出来,这个球是随机的。
(4)拿到最后谁也没有拿到白球但是球没有了算B赢。
问A赢的概率。
思路:f[i][j]表示A面临(i,j)赢的期望,p[i][j]表示B面临(i,j)的期望。
题意:n个白球m个黑球在一个袋子中。A、B两个人玩游戏。
(1)先拿到白球的人赢,游戏结束;
(2)A先拿;
(3)每次B拿完后,会有一个球自己跳出来,这个球是随机的。
(4)拿到最后谁也没有拿到白球但是球没有了算B赢。
问A赢的概率。
思路:f[i][j]表示A面临(i,j)赢的期望,p[i][j]表示B面临(i,j)的期望。
double f[1005][1005],p[1005][1005]; int n,m; double DFS1(int,int); double DFS2(int n,int m) { if(p [m]>-1) return p [m]; if(m==0||n==0) return 1; p [m]=1.0*n/(n+m); double x,y; if(m==1) p [m]+=1.0*m/(n+m)*(1-DFS1(n-1,m-1)); else { x=1.0*n/(n+m-1)*(1-DFS1(n-1,m-1)); y=1.0*(m-1)/(n+m-1)*(1-DFS1(n,m-2)); p [m]+=1.0*m/(n+m)*(x+y); } return p [m]; } double DFS1(int n,int m) { if(f [m]>-1) return f [m]; if(n==0) return 0; if(m==0) return 1; f [m]=1.0*n/(n+m)+1.0*m/(n+m)*(1-DFS2(n,m-1)); return f [m]; } int main() { clr(f,-1); clr(p,-1); RD(n,m); PR(DFS1(n,m)); return 0; }
相关文章推荐
- CodeForces 148D Bag of mice 概率DP , DFS
- codeforces 148D Bag of mice(概率dp)
- CodeForces 148D Bag of mice [概率DP]
- CodeForces 148D Bag of mice (经典概率dp)
- CodeForces 148D Bag of Mice 概率DP
- codeforces 148D Bag of mice DP 概率
- Codeforces 148D Bag of mice(概率dp)
- CodeForces-148D Bag of mice 概率dp
- Codeforces 148D Bag of mice 概率dp(水
- Codeforces 148D Bag of mice(概率dp)
- CodeForces 148D Bag of mice(概率DP )
- Codeforces-148D Bag of mice (概率DP)
- CodeForces 148D Bag of mice 概率dp!!
- CodeForces 148D Bag of mice —— 概率DP
- CodeForces 148D Bag of mice 概率DP
- Codeforces 148D Bag of mice (概率dp)
- Codeforces 148D Bag of mice:概率dp 记忆化搜索
- CodeForces - 148D Bag of mice(概率dp)
- Codeforces 148D Bag of mice 概率dp(水
- CodeForces 148D Bag of mice(概率DP)