貌似竟然是我的第一道概率DP。。

手机码代码真不舒服。。。。

/************************************************
Memory: 67248 KB Time: 31 MS
Language: GNU G++ 4.9.2 Result: Accepted
************************************************/
/**
一个岛上住着一些石头,剪刀,布,他们互相之间两两随机碰面,如果不是一个种族,一个会杀死另一个
最后只会活下一个种族,求最后活下来的是各个种族的概率 这tm原来是一道概率dp,那我也不会啊 =。=
想一想。。。dp[i][j][k] 表示三个种族分别剩下i,j,k的概率
那么初始dp[a][b][c] = 1;
a和b碰面的概率是i*j/i*j+j*k+k*i,所以死一只b的概率是i*j/i*j+j*k+k*i(如果不是看别人题解,我绝对想不到啊啊,概率渣)
那么由dp[i][j][k]到dp[i][j-1][k]的概率是i*j/i*j+j*k+k*i
对于dp[i][j][k]来说,有三种情况可以到达它,dp[i+1][j][k],dp[i][j+1][k],dp[i][j][k+1]
所以dp[i][j][k]=dp[i+1][j][k] * k*(i+1) / ((i+1)*j + j*k + k*(i+1)) +
dp[i][j+1][k] * i*(j+1) / (i*(j+1) + k*i + (j+1)*k) +
dp[i][j][k+1] * j*(k+1) / (j*(k+1) + j*i + (k+1)*i)
还有一点问题就是。。当i,j,k中有两个为0的时候,表达式会出现分母为0的情况
考虑到其实dp[i][0][0]已经不能再转移了,所以判断一下
*/
#include<stdio.h>
double dp[205][205][205];
int main()
{
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
dp[a][b][c] = 1;
for (int i = a; i >= 0; --i)
{
for (int j = b; j >= 0; --j)
{
for (int k = c; k >= 0; --k)
{
if (i == a && j == b && k == c) continue;
if (j || k)
dp[i][j][k] += dp[i + 1][j][k] * k * (i + 1) / (k * (i + 1) + j * k + (i + 1) * j);
if (i || k)
dp[i][j][k] += dp[i][j + 1][k] * i * (j + 1) / (i * (j + 1) + (j + 1) * k + i * k);
if (i || j)
dp[i][j][k] += dp[i][j][k + 1] * j * (k + 1) / (j * (k + 1) + j * i + (k + 1) * i);
//printf("dp[%d][%d][%d]=%f\n", i, j, k, dp[i][j][k]);
}
}
}
double p1, p2, p3;
p1 = p2 = p3 = 0;
for (int i = 1; i <= a; ++i)
p1 += dp[i][0][0];
for (int i = 1; i <= b; ++i)
p2 += dp[0][i][0];
for (int i = 1; i <= c; ++i)
p3 += dp[0][0][i];
printf("%.9f %.9f %.9f", p1, p2, p3);
return 0;
}

  

CodeForces 540D--Bad Luck Island(概率DP)的更多相关文章

  1. codeforces 540D Bad Luck Island (概率DP)

    题意:会出石头.剪刀.布的人分别有r,s,p个,他们相互碰到的概率相同,输的人死掉,问最终活下去的人是三种类型的概率 设状态dp(i,j,k)为还有i个石头,j个剪刀,k个布时的概率,dp(r,s,p ...

  2. Codeforces 540D Bad Luck Island - 概率+记忆化搜索

    [题意] 一个岛上有三种生物A,B,C,各有多少只在输入中会告诉你,每种最多100只 A与B碰面,A会吃掉B, B与C碰面,B会吃掉C, C与A碰面,C会吃掉A...忍不住想吐槽这种环形食物链 碰面是 ...

  3. 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 ...

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

    题目链接:https://vjudge.net/contest/226823#problem/D The Bad Luck Island is inhabited by three kinds of ...

  5. CodeForces 540D Bad Luck Island (DP)

    题意:一个岛上有石头,剪刀和布,规则就不用说了,问你最后只剩下每一种的概率是多少. 析:很明显的一个概率DP,用d[i][j][k]表示,石头剩下 i 个,剪刀剩下 j 个,布剩下 k 个,d[r][ ...

  6. Codeforces 540D Bad Luck Island

    http://codeforces.com/problemset/problem/540/D 题目大意: 会出石头.剪刀.布的人分别有r,s,p个,他们相互碰到的概率相同,输的人死掉,问最终活下去的人 ...

  7. cf540D. Bad Luck Island(概率dp)

    题意 岛上有三个物种:剪刀$s$.石头$r$.布$p$ 其中剪刀能干掉布,布能干掉石头,石头能干掉剪刀 每天会从这三个物种中发生一场战争(也就是说其中的一个会被干掉) 问最后仅有$s/r/p$物种生存 ...

  8. CF 540D——Bad Luck Island——————【概率dp】

    Bad Luck Island time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...

  9. Codeforces B. Bad Luck Island(概率dp)

    题目描述: Bad Luck Island time limit per test 2 seconds memory limit per test 256 megabytes input standa ...

  10. codeforces 148D Bag of mice(概率dp)

    题意:给你w个白色小鼠和b个黑色小鼠,把他们放到袋子里,princess先取,dragon后取,princess取的时候从剩下的当当中任意取一个,dragon取得时候也是从剩下的时候任取一个,但是取完 ...

随机推荐

  1. Sybase ASE无响应的又一个情况

    昨天下午,客户那边的系统管理员给我电话,说有套系统的SYBASE数据库最近有点怪,总是时不时莫名其妙地就忽然卡死,有可能一下子就自动恢复了,也有可能后面一直卡住,只好重启.根据客户反映的状况,初步判断 ...

  2. 背投广告js

    js: $('#appwrap').append('<a href="http://web.2144.cn/gateway/reg?pos=8966" id="ad ...

  3. Ubuntu zookeeper-3.5.0-alpha启动错误 zkEnv.sh: Syntax error: "(" unexpected (expecting "fi")(转)

    昨天小猿我把Ubuntu Server64位上的 zookeeper换成了最新版本的,结果启动的时候出错:之前zookeeper-3.3.6是没有任何问题的,换成了zookeeper3.5出现了下面的 ...

  4. 添加service到SystemService硬件服务

    添加service到SystemService: 添加硬件服务. 创建时间:2015年3月9日(星期一) 晚上11:07 | 分类:硬件驱动Android | 天气: 修改时间:2015年3月10日( ...

  5. [编译] g++ 与 Makefile

    g++ -c CppSoureFile -o ObjectCodeFile -c 编译而不链接 -lm 链接数学库 -static 生成静态链接的程序

  6. 场解决方案添加webpart(Create Webpart to page using code)

    转:http://www.soaspx.com/dotnet/asp.net/tech/tech_20120814_9489.html /// <summary>         /// ...

  7. C# winform自定义Label控件使其能设置行距

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...

  8. GUN/GPL 中文译文

    版权所有 (C) 1989,1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307U ...

  9. mongodb创建数据库和配置用户

    上一篇我们说了mongodb远程连接配置,今天给大家说下mongodb怎么创建数据库和配置用户,毕竟光有远程连接是不够的,我们还要上去操作和放数据的.   系统:centos 5.x   环境:mon ...

  10. sr4000自带API和opencv结合获取图像

    /* * ===================================================================================== * * Filen ...