博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Codeforces Round #301 (Div. 2) D]Bad Luck Island(概率Dp)
阅读量:6179 次
发布时间:2019-06-21

本文共 1759 字,大约阅读时间需要 5 分钟。

Description

The Bad Luck Island is inhabited by three kinds of species: r rocks, s scissors and p papers. At some moments of time two random individuals meet (all pairs of individuals can meet equiprobably), and if they belong to different species, then one individual kills the other one: a rock kills scissors, scissors kill paper, and paper kills a rock. Your task is to determine for each species what is the probability that this species will be the only one to inhabit this island after a long enough period of time.

Solution

题意:岛上有三种居民,石头r个,剪刀s个,布p个,他们会以相等的概率相遇,输的一方就被杀死,问最后剩下的是每种居民的概率各是多少

用f[i][j][k]表示表示还剩i个石头、j个剪刀、k个布这种状态出现的概率

f[i][j][k]=

  f[i+1][j][k]*((i+1)*k)/((i+1)*j+(i+1)*k+j*k)

+f[i][j+1][k]*((j+1)*i)/(i*(j+1)+i*k+(j+1)*k)

+f[i][j][k+1]*((k+1)*j)/(i*j+i*(k+1)+j*(k+1))

#include
#include
#include
#include
using namespace std;int r,s,p;double f[107][107][107],ans[3];int main(){ scanf("%d%d%d",&r,&s,&p); f[r][s][p]=1; for(int i=r;i>=0;i--) { for(int j=s;j>=0;j--) { for(int k=p;k>=0;k--) { if(j&&k)f[i][j][k]+=f[i+1][j][k]*((i+1)*k)/((i+1)*j+(i+1)*k+j*k); if(i&&k)f[i][j][k]+=f[i][j+1][k]*((j+1)*i)/(i*(j+1)+i*k+(j+1)*k); if(i&&j)f[i][j][k]+=f[i][j][k+1]*((k+1)*j)/(i*j+i*(k+1)+j*(k+1)); } } } for(int i=1;i<=r;i++) for(int j=1;j<=s;j++) ans[0]+=f[i][j][0]; for(int i=1;i<=s;i++) for(int j=1;j<=p;j++) ans[1]+=f[0][i][j]; for(int i=1;i<=r;i++) for(int j=1;j<=p;j++) ans[2]+=f[i][0][j]; printf("%.12lf %.12lf %.12lf\n",ans[0],ans[1],ans[2]); return 0;}

 

转载于:https://www.cnblogs.com/Zars19/p/6917157.html

你可能感兴趣的文章
站在巨人肩膀上的牛顿:Kubernetes和SAP Kyma
查看>>
技术工坊|浅谈区块链的Layer2扩展(北京)
查看>>
SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
查看>>
Apache和PHP结合 及 Apache默认虚拟主机
查看>>
添加自定义监控项目配置邮件告警测试告警不发邮件的问题处理
查看>>
solidity智能合约的经典设计模式
查看>>
华为交换网络基础、基本配置、STP/RSTP
查看>>
SpringCloud 微服务 (十七) 容器部署 Docker
查看>>
不定项选择题
查看>>
netty 分析博客
查看>>
Spring Cloud构建微服务架构服务注册与发现
查看>>
BCGControlBar教程:如何将MFC控件的BCGControlBarBCGSuite添加到对话框中
查看>>
深入理解Java8 Lambda表达式
查看>>
Java集合框架面试问题集锦
查看>>
Java每天10道面试题,跟我走,offer有!(六)
查看>>
四种途径提高RabbitMQ传输数据的可靠性(二)
查看>>
c语言实现多态
查看>>
Linux 在 TOP 命令中切换内存的显示单位
查看>>
浏览器的加载与页面性能优化
查看>>
Java基础学习总结(5)——多态
查看>>