CF540D Bad Luck Island(期望dp)
##解题思路
比较容易的一道期望$dp$,设$f[i][j][k]$表示石头$i$个,剪刀$j$个,步子$l$个。然后转移的时候用组合数算一下就好了。
##代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
const int MAXN = 105;
int r,s,p;
double f[MAXN][MAXN][MAXN],ans1,ans2,ans3;
inline int calc(int x,int y,int z){
return max(((x+y+z)*(x+y+z-1)-x*(x-1)-y*(y-1)-z*(z-1))/2,1);
}
int main(){
scanf("%d%d%d",&r,&s,&p);
f[r][s][p]=1.0;
for(int i=r;i>=0;i--)
for(int j=s;j>=0;j--)
for(int l=p;l>=0;l--){
if(i==0 && j==0 && l==0) continue;
if(i==r && j==s && l==p) continue;
// cout<<i<<" "<<j<<" "<<l<<" "<<calc(i,j,l)<<endl;
f[i][j][l]+=f[i+1][j][l]*((double)((i+1)*l)/calc(i+1,j,l));
f[i][j][l]+=f[i][j+1][l]*((double)((j+1)*i)/calc(i,j+1,l));
f[i][j][l]+=f[i][j][l+1]*((double)((l+1)*j)/calc(i,j,l+1));
}
for(int i=1;i<=r;i++) ans1+=f[i][0][0];
for(int i=1;i<=s;i++) ans2+=f[0][i][0];
for(int i=1;i<=p;i++) ans3+=f[0][0][i];
printf("%.12lf %.12lf %.12lf",ans1,ans2,ans3);
return 0;
}
CF540D Bad Luck Island(期望dp)的更多相关文章
- cf540D. Bad Luck Island(概率dp)
题意 岛上有三个物种:剪刀$s$.石头$r$.布$p$ 其中剪刀能干掉布,布能干掉石头,石头能干掉剪刀 每天会从这三个物种中发生一场战争(也就是说其中的一个会被干掉) 问最后仅有$s/r/p$物种生存 ...
- Codeforces Round #301 (Div. 2) D. Bad Luck Island 概率DP
D. Bad Luck Island Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/540/pr ...
- CF540D Bad Luck Island
嘟嘟嘟 看到数据范围很小,就可以暴力\(O(n ^ 3)\)dp啦. 我们令\(dp[i][j][k]\)表示这三种人分别剩\(i, j, k\)个的概率.然后枚举谁挂了就行. 这里的重点在于两个人相 ...
- codeforces 540D Bad Luck Island (概率DP)
题意:会出石头.剪刀.布的人分别有r,s,p个,他们相互碰到的概率相同,输的人死掉,问最终活下去的人是三种类型的概率 设状态dp(i,j,k)为还有i个石头,j个剪刀,k个布时的概率,dp(r,s,p ...
- 【CF540D】 D. Bad Luck Island (概率DP)
D. Bad Luck Island time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- cf.301.D. Bad Luck Island(dp + probabilities)
D. Bad Luck Island time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- CF#301 D:Bad Luck Island (概率dp)
D:Bad Luck Island 一个岛上有r个石头,s个剪子,p个布,他们之间随机挑出两个相遇,如果不是相同物种,就会有一个消失,分别求出最后这座岛上只剩下一个物种的概率. 我们用dp[i][j] ...
- CF 540D——Bad Luck Island——————【概率dp】
Bad Luck Island time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...
- Codeforces B. Bad Luck Island(概率dp)
题目描述: Bad Luck Island time limit per test 2 seconds memory limit per test 256 megabytes input standa ...
随机推荐
- war包里面文件的修改方式
1 将war包移动到一个干净的路径下,使用 jar xvf ROOT.war 命令将war进行解压操作 2 修改相应的文件内容,修改想要修改的文件,比如web.xml 3 使用 j ...
- 数据结构(c语言版,严蔚敏)第3章栈和队列
第3章栈和队列
- 深入理解Magento – 第三章 – 布局,块和模板
深入理解Magento 作者:Alan Storm 翻译:Hailong Zhang 第三章 – 布局,块和模板 我们接着研究Magento.根据我们第二章讲的Magento MVC的架构,我们接下来 ...
- 【转】让应用程序支持emoji字符
什么是emoji?就是这些表情和符号:
- 思维+multiset优化——cf1249E
正着想很难,但是反着想就容易有思路 /* 将问题转化为 挑选最多的线段,每个点的覆盖次数不超过k次 multiset里存k个右端点,表示第i层当前的最远右端点,每次来一根新线段,能填就填进并更新,不能 ...
- 【Java架构:基础技术】一篇文章搞掂:Eclipse
Eclipse中使用SVN 1.打开资源库视图 https://www.cnblogs.com/liangguangqiong/p/7965770.html 一.编辑器方面 格式化取消自动换行:打开E ...
- docker 镜像中心搭建
1.由于国外镜像很慢,所以用了网易蜂巢的镜像docker pull hub.c.163.com/library/registry:2.5.2本地的存储空间挂载到容器内部,持久保存镜像中心文件docke ...
- leetcode.字符串.409最长回文串-Java
1. 具体题目 给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串.在构造过程中,请注意区分大小写.比如 "Aa" 不能当做一个回文字符串. 注意: 假设 ...
- &与&&,|与||的区别
今天在做leetcode的时候,遇到了运算符的不同而导致结果不一致的问题.记录一下提醒自己 中文名称与英文名称 &:按位与(Bitwise and) &&:逻辑与(logica ...
- 数据整理A