抓老鼠 codeForce 148D - Bag of mice 概率DP
2024-10-14 17:01:04
设dp[i][j]为有白老鼠i只,黑老鼠j只时轮到公主取时,公主赢的概率。
那么当i = 0 时,为0
当j = 0时,为1
公主可直接取出白老鼠一只赢的概率为i/(i+j)
公主取出了黑老鼠,龙必然也要取出黑老鼠公主才能赢,跑出来的老鼠有两种可能
跑出来的是黑老鼠,公主赢的概率为dp[i][j] += j/(i+j)*(j-1)/(i+j-1)*(j-2)/(i+j-2)*dp[i][j-3].(j>=3)
跑出来的是白老鼠,公主赢的概率为dp[i][j] += j/(i+j)*(j-1)/(i+j-1)*i/(i+j-2)*dp[i-1][j-2].(j>=2)
贴代码:
#include <cstdio>
#define N 1005
double dp[N][N];
int main()
{
// freopen("in.c","r",stdin);
int w,b;
scanf("%d%d",&w,&b);
for(int i=; i<=w; ++i) dp[i][] =;
for(int i=; i<=b; ++i) dp[][i] =;
for(int i=; i<=w; ++i)
{
for(int j=; j<=b; ++j)
{
dp[i][j] = (double)i/(i+j);
if(j >= ) dp[i][j] += (double)j/(i+j)*(double)(j-)/(i+j-)*(double)(j-)/(i+j-)*dp[i][j-];
if(j >= ) dp[i][j] += (double)j/(i+j)*(double)(j-)/(i+j-)*(double)i/(i+j-)*dp[i-][j-];
}
}
printf("%.9lf\n",dp[w][b]);
return ;
}
最新文章
- PHP网页
- Hadoop:Windows 7 32 Bit 编译与运行
- SQLServer调试
- 【memcache缓存专题(1)】memcache的介绍与应用场景
- Trail: JDBC(TM) Database Access(2)
- php mysql PDO使用
- [置顶] 正则表达式应用:匹配IP地址
- YARN简短的建筑
- jQuery的each函数
- YML(1)什么是 YML
- KnockOut绑定之Click绑定
- wget Mac OS 下安装
- C++Primer第五版学习笔记
- axure8.0激活
- eclipse使用报错集锦
- html问题汇总
- Docker基础-Docker数据管理
- php 会话控制(理解会话控制的概念)
- 学习Python中的集合
- Review——JS的异步与同步