您的位置:首页 > 其它

CodeForces 148D-Bag of mice概率DP

2016-12-11 13:59 323 查看
题意:

公主和龙比谁先抓到白老鼠,公主每次抓一个,龙每次抓一个,放跑一个。放跑的不算抓到的。如果都没抓到算龙win。询问公主win的概率

思路:

如果公主赢,那么必定抓到了白老鼠,状态转移方程如代码,如果大于2,可以抓黑老鼠,放跑白老鼠,如果大于3可以抓黑老鼠,放跑黑老鼠

#include <iostream>
#include <cstdio>
#include <queue>
using namespace std;
double dp[1005][1005];
//dp[i  白老鼠]  [j 黑老鼠]  =c  获胜概率
int main()
{
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
dp[i][0]=1.0;

for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{

dp[i][j]+=1.0*i/(i+j);
if(j>=2)
{
dp[i][j]+=1.0*j/(i+j)   *  1.0*(j-1)/(i+j-1)   *   1.0*(i)/(i+j-2) *dp[i-1][j-2];
}
if(j>=3)
{
dp[i][j]+=1.0*j/(i+j)   *  1.0*(j-1)/(i+j-1)   *   1.0*(j-2)/(i+j-2) *dp[i][j-3];
}
}
}
printf("%.9lf\n",dp
[m]);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: