CodeForces - 540D Bad Luck Island —— 求概率

题目链接:https://vjudge.net/contest/226823#problem/D

 

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.

Input

The single line contains three integers rs and p (1 ≤ r, s, p ≤ 100) — the original number of individuals in the species of rock, scissors and paper, respectively.

Output

Print three space-separated real numbers: the probabilities, at which the rocks, the scissors and the paper will be the only surviving species, respectively. The answer will be considered correct if the relative or absolute error of each number doesn't exceed 10 - 9.

Examples

Input
2 2 2
Output
0.333333333333 0.333333333333 0.333333333333
Input
2 1 2
Output
0.150000000000 0.300000000000 0.550000000000
Input
1 1 3
Output
0.057142857143 0.657142857143 0.285714285714

 

题意:

有r个石头,s个剪刀,p个布。每次都随机挑出,问:最后只剩下石头、剪刀、布的概率分别是多少?

 

题解:

1.设dp[i][j][k]为:剩余i个石头,j个剪刀,k个布的概率。

2.可知:如果选到的两个是同类型,那么这一轮是无意义的,且对结果毫无影响,所以可忽略这种情况,只需考虑两者不同的情况。

3.假设当前还剩余i个石头,j个剪刀,k个布,那么下一轮抽到石头和剪刀的概率为(不需考虑同类型的):(i*j)/(i*j+i*k+j*k),而此种情况的结果为[i][j-1][k],所以dp[i][j-1][k] += (i*j)/(i*j+i*k+j*k)*dp[i][j][k]。同理剩下的两种情况。

 

代码如下:

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <cmath>
 5 #include <cstdlib>
 6 #include <string>
 7 #include <vector>
 8 #include <map>
 9 #include <set>
10 #include <queue>
11 #include <sstream>
12 #include <algorithm>
13 using namespace std;
14 typedef long long LL;
15 const double eps = 1e-8;
16 const int INF = 2e9;
17 const LL LNF = 9e18;
18 const int MOD = 1e9+7;
19 const int MAXN = 1e2+10;
20 
21 double dp[MAXN][MAXN][MAXN];
22 int main()
23 {
24     int n, m, p;
25     while(scanf("%d%d%d",&n,&m,&p)!=EOF)
26     {
27         memset(dp, 0, sizeof(dp));
28         dp[n][m][p] = 1.0;
29         for(int i = n; i>=0; i--)
30         for(int j = m; j>=0; j--)
31         for(int k = p; k>=0; k--)
32         {
33             if(i&&j) dp[i][j-1][k] += (1.0*i*j/(i*j+j*k+i*k))*dp[i][j][k];
34             if(j&&k) dp[i][j][k-1] += (1.0*j*k/(i*j+j*k+i*k))*dp[i][j][k];
35             if(i&&k) dp[i-1][j][k] += (1.0*i*k/(i*j+j*k+i*k))*dp[i][j][k];
36         }
37 
38         double r1 = 0, r2 = 0, r3 = 0;
39         for(int i = 1; i<=n; i++) r1 += dp[i][0][0];
40         for(int i = 1; i<=m; i++) r2 += dp[0][i][0];
41         for(int i = 1; i<=p; i++) r3 += dp[0][0][i];
42 
43         printf("%.10f %.10f %.10f\n", r1,r2,r3);
44     }
45 }
View Code

 

转载于:https://www.cnblogs.com/DOLFAMINGO/p/8995363.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/465995.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

你真的理解内存分配吗?

内存是计算机中必不可少的资源&#xff0c;因为 CPU 只能直接读取内存中的数据&#xff0c;所以当 CPU 需要读取外部设备&#xff08;如硬盘&#xff09;的数据时&#xff0c;必须先把数据加载到内存中。我们来看看可爱的内存长什么样子的吧&#xff0c;如图1所示&#xff1a;一…

Linux使用技巧15则

初用Linux时可能有处处不方便的感觉, 可是等使用一段时间掌控了一些技巧后就会感到越来越顺手了&#xff0c;以下是使用Linux积累的一些经验和技巧。 1.使用虚拟控制台登录后按Alt F2键这时又能够看到"login:"提示符&#xff0c;这个就是第二个虚拟控制台。一般新安装…

每日一练(8)—— 野指针

int *p&#xff1b; int a 20; *p a; printf("%d",*p);运行结果是什么&#xff1f;A.10 B.a 的 地址值 C.编译错误 D.运行异常分析&#xff1a; 一、指针变量没有被初始化。任何指针变量刚被创建时不会自动成为NULL指针&#xff0c;它的缺省值是随机的&#xff0…

去除桌面图标的小箭头

首先&#xff0c;单击“开始”按钮&#xff0c;选择“运行”&#xff0c;在运行对话框中键入regedit后回车&#xff0c;即可进入注册表编辑器&#xff0c;选择HKEY_CLASSES_ROOTlnkfile,在右边的窗口中找到字符串值“isshortcut”,按DELETE键将其删除。然后&#xff0c;仍在HKE…

杂思

移动互联网,大数据,云计算,人工智能 5个小时的比赛&#xff0c;挑战的是人类脑力和体力的极限。要应对的是由数据结构、图论、计算几何与数论、算法、机器学习、模式识别等科目混合而成的考题&#xff0c;解答它们需要严密的思维方式和长期训练的思维能力。它还考察你的团队协作…

深信服2021秋招笔试题

来源于读者投稿&#xff0c;作者Angel。笔试时间&#xff1a;2020.08.25&#xff0c;19&#xff1a;00---21&#xff1a;00。岗位&#xff1a;嵌入式软件工程师。题型&#xff1a;5个不定项选择题&#xff0c;16分5个填空题&#xff0c;19分2道编程题&#xff0c;65分不定项选择…

每日一题(9)—— 写一个标准宏MIN,这个宏输入两个参数并返回较小的一个

写一个标准宏MIN&#xff0c;这个宏输入两个参数并返回较小的一个。 分析&#xff1a; 宏定义的注意两点&#xff1a; 1、数据类型是否有溢出的风险&#xff08;如一年有多少个秒的宏&#xff09;&#xff1b; 2、带参宏的每个参数都要用括号括起来。 #define MIN(x,y) ((x)…

用ISA阻挡用户向论坛发贴子

右击访问网站这条策略&#xff0c;点击“配置HTTP”<?XML:NAMESPACE PREFIX V /><?XML:NAMESPACE PREFIX O />找到方法选项&#xff0c;并添加一条阻止的HTTP命令POST应用ISA的配置转载于:https://blog.51cto.com/freemanluo/186829

看我解决Linux下的OTG切换问题

1.硬件原理图看下面的原理图VCC_OTG_EN 引脚&#xff0c;这个脚主要是用来控制给外部OTG设备提供电源控制的。如果设备作为DEVICE设备&#xff0c;这时候VBUS的电是由外部提供的&#xff0c;比如通过USB线和电脑连接&#xff0c;这个时候&#xff0c;VBUS的电压是由电脑提供的。…

poj3190 Stall Reservations(贪心+STL)

https://vjudge.net/problem/POJ-3190 cin和scanf差这么多么。。tle和300ms 思路&#xff1a;先对结构体x升序y升序&#xff0c;再对优先队列重载<&#xff0c;按y升序。 然后依次入队&#xff0c;如果node[i].x<q.top().y ans&#xff0c; 否则出队&#xff0c;入队&…

每日一题(10)—— 数组与指针

分析下面的代码&#xff0c;求输出结果。 int a[5] {1,2,3,4,5};int *p (int *)(&a 1);printf("%d %d",*(a 1),*(p - 1)); 分析&#xff1a; a —— 数组首元素的地址 等价于 &a[0] &a —— 数组的首地址 int —— 4字节 *(a 1) a[1] 2&…

美图赏析:拆解USB无线网卡,电路方案非常经典

很多台式机没有无线网卡&#xff0c;只能插网线。想要使用WiFi&#xff0c;插个USB无线网卡就行&#xff0c;简单方便&#xff1a;USB无线网卡非常小巧&#xff0c;以至于会好奇&#xff0c;电路板是怎么塞进去的&#xff1a;下面拆解其中某个厂家的一款&#xff1a;另一个角度…

程序员经常说的「设计模式」到底是什么?

当程序员说去「设计模式」时&#xff0c;你是否会一脸懵逼&#xff0c;到底什么是设计模式呢&#xff1f; 很多人应该听说过设计模式&#xff08;Design pattern&#xff09;&#xff0c;又或多或少的看过或用过设计模式&#xff0c;但是实际用在开发过程中总有点心有余而力不足…

每日一题(11)—— 结构体大小

分析下面的代码&#xff0c;求运行结果&#xff08;64位&#xff09;。 #include <stdio.h>struct {int id;unsigned char arg;char *p;void (*func)(void); } test;int main(void) {printf("sizeof(test.id):%d\n", sizeof(test.id));printf("sizeof(tes…

缓存服务器在Linux下的运用

本文只介绍memcached缓存服务器的PHP的API&#xff0c;想查看其他关于Memcached缓存服务器的API文档案&#xff0c;请访问 http://www.danga.com/memcached/一、环境需求安装Memcached缓存服务器须要 libevent库的支持&#xff0c;所以请在安装Memcached缓存服务器之前检查有没…

Linux 内存管理之vmalloc

走进vmalloc 根据前面的系列文章&#xff0c;我们知道了buddy system是基于页框分配器&#xff0c;kmalloc是基于slab分配器&#xff0c;而且这些分配的地址都是物理内存连续的。但是随着碎片化的积累&#xff0c;连续物理内存的分配就会变得困难&#xff0c;对于那些非DMA访问…

composer不成功的原因

1在下载好composer.setup的过程中&#xff0c;出现了错误&#xff0c;安装好composer.setup后并没有在path中出现关于composer.setup/bin的目录&#xff0c;如果没有出现这个path的这个路径的话&#xff0c;那么你在cmd里面就会出现找不到这条命令的情况 2.安装好phpstudy的这个…

《观止》书评

收到《观止》一书已经一周了&#xff0c;因为工作很忙的原因&#xff0c;前几天完全没有看。到了周末才稍有点空闲&#xff0c;便拿起手边的这本《观止》一起。谁知一“观”而无法“止”。硬是活生生的占用了我整个本来打算用来补觉的周末。 严格说来《观止》并不算是技术书籍…

每日一题(12)—— .h头文件中ifndef/define/endif的作用

.h头文件中ifndef/define/endif的作用&#xff1f; 分析&#xff1a; 防止头文件被重复包含。 #ifndef _TEST_H_ #define _TEST_H_/* test.h */#endif /* _TEST_H_ */假如在a文件和b文件中都使用这个test.h&#xff0c;假如编译器先编译a&#xff0c;执行.h的内容&#xff0…

进程是如何使用内存的?

程序运行概述程序&#xff08;我们这里只讨论单进程情况&#xff0c;存在多进程的程序如淘宝微信等不展开讨论&#xff09;镜像存在磁盘中&#xff0c;运行时将镜像加载至内存RAM中&#xff0c;然后开始执行。先来看一下CPU的多级存储结构&#xff0c;CPU通用寄存器访问速度最快…