Codeforce 540D(概率dp)
来源:互联网 发布:哪个fm软件好 知乎 编辑:程序博客网 时间:2024/06/01 09:10
链接:点击打开链接
题意:有x个石头,y个剪刀,z个布,两两相遇,按照石头剪刀布的规则,每次相遇会减少一个,问最后只剩剪刀,只剩石头,和的只剩布的概率
代码:
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <iostream>#include <algorithm>using namespace std;double dp[105][105][105];int main(){ int x,y,z,i,j,k,tmp; double ans1,ans2,ans3; while(scanf("%d%d%d",&x,&y,&z)!=EOF){ for(i=0;i<=x;i++) //dp[i][j][k]表示剩i个石头,j个剪刀,k个布的概率 for(j=0;j<=y;j++) for(k=0;k<=z;k++) dp[i][j][k]=0; dp[x][y][z]=1.0; for(i=x;i>=0;i--){ for(j=y;j>=0;j--){ for(k=z;k>=0;k--){ tmp=i*j+j*k+i*k; //要算一定会减少一个人的方案数数 if(i>=1&&k>=1) dp[i-1][j][k]=(dp[i-1][j][k]+dp[i][j][k]*(i*k*1.0/tmp)); if(j>=1&&i>=1) dp[i][j-1][k]=(dp[i][j-1][k]+dp[i][j][k]*(i*j*1.0/tmp)); if(j>=1&&k>=1) dp[i][j][k-1]=(dp[i][j][k-1]+dp[i][j][k]*(j*k*1.0/tmp)); } } } ans1=ans2=ans3=0; for(i=1;i<=x;i++) ans1+=dp[i][0][0]; for(i=1;i<=y;i++) ans2+=dp[0][i][0]; for(i=1;i<=z;i++) ans3+=dp[0][0][i]; printf("%.10lf %.10lf %.10lf\n",ans1,ans2,ans3); } return 0;}
0 0
- Codeforce 540D(概率dp)
- codeforce 143D dp
- CodeForces 540D--概率dp
- CF - 540D 概率dp
- codeforce 24D Broken robot—概率DP—conquersea博客
- Codeforce 219D(树形dp)
- Codeforce 486D(树形dp)
- cf 540D D. Bad Luck Island 概率dp
- codeforces 540D D. Bad Luck Island( 概率dp)
- codeforce 67D - Optical Experiment(dp)
- Codeforce 337D 容斥+树形dp
- Codeforce 149D(区间dp+括号匹配)
- CodeForce 628D Magic Numbers( 数位DP )
- codeforces105 D(概率dp)
- codeforces 148D 概率DP
- codeforces 148 D 概率dp
- CF 148D 概率dp
- Codeforces 518D 概率DP
- 【CodeForce 710E】Generate a String
- 模版方法模式
- ListView中多个EditText设置焦点 多次点击异常报错
- 资料整理
- Asynchronous Programming in C# 5.0 using async and await
- Codeforce 540D(概率dp)
- PHP变量在内核中的存储方式
- 数据库事务丢失修改,不可重复读,读"脏"数据的区别
- 实现一个串口被多个Form窗体调用的功能
- 关系数据库事务探索学习
- Gson基本使用
- 面向对象程序设计上机练习六(类和对象)
- Android中paddingleft(),layout_marginleft(),getleft(),getright()的一些区别
- notification点击跳转的两种情况