CodeForces
来源:互联网 发布:地图矢量化软件工具 编辑:程序博客网 时间:2024/05/17 21:44
题意:有r个石头,s个剪刀,p个布,求在足够长一段时间后,石头、剪刀、布分别存活下来的概率。
思路:概率dp,定义dp[i][j][k],表示有i个石头,j个剪刀,k个布情况下的概率。
状态转移方程:dp[i-1][j][k]=dp[i-1][j][k]+dp[i][j][k]*i*k/(i*j+i*k+j*k); 表示布包石头的情况,石头-1。
ansr表示石头最终存活下来的概率。对所有dp[i][j][0]求和即可,即布已为0,石头一定存活。
代码:
#include<bits/stdc++.h>using namespace std;const int N=105;double dp[N][N][N];int main(){int r,s,p;double ansr=0,anss=0,ansp=0;scanf("%d%d%d",&r,&s,&p);memset(dp,0,sizeof(dp));dp[r][s][p]=1;for(int i=r;i>=1;i--){for(int j=s;j>=1;j--){for(int k=p;k>=1;k--){int temp=i*j+i*k+j*k;dp[i-1][j][k]+=dp[i][j][k]*i*k/temp;dp[i][j-1][k]+=dp[i][j][k]*j*i/temp;dp[i][j][k-1]+=dp[i][j][k]*k*j/temp;}}} for(int i=r;i>=0;i--){for(int j=s;j>=0;j--){ansr+=dp[i][j][0];}}printf("%.12f ",ansr);for(int i=s;i>=0;i--){for(int j=p;j>=0;j--){anss+=dp[0][i][j];}}printf("%.12f ",anss);for(int i=r;i>=0;i--){for(int j=p;j>=0;j--){ansp+=dp[i][0][j];}}printf("%.12f\n",ansp);return 0;}
阅读全文
0 0
- codeforces~~~
- Codeforces
- codeforces
- Codeforces
- codeforces
- codeforces
- Codeforces
- Codeforces
- CodeForces
- CodeForces
- CodeForces
- CodeForces
- CodeForces
- Codeforces
- Codeforces
- Codeforces
- Codeforces
- Codeforces
- jQuery制作随机色弹幕墙
- random
- 开源协议(BSD,Apache,GPL,LGPL,MIT)常识
- java读取js文件
- 算法练习笔记(十六)—— 最长的子串
- CodeForces
- CentOS 7-(64位)系统下安装Anaconda(Python3.x)及pip使用
- 打开avi
- java线程通信wait()和notify()机制
- 外观模式
- Linux上系统日志配置文件
- 三大框架SSM——MyBatis(2)
- [Object-C]CGD&NSOperation
- struts