您的位置:首页 > 其它

codeforces 148D Bag of mice DP 概率

2012-12-23 11:06 351 查看
题意:类似取球游戏,可以认为龙有两次取求机会,第二次取任何球都无效。

做法:建立状态nv[i][j],剩下i个球,j个是白球,同理dra,龙的状态,然后进行模拟即可。

#include <iostream>
#include <cstdio>
#define LMT 2004//老错误了,LMT错误,RE了一次
using namespace std;
double nv[LMT][LMT],dra[LMT][LMT];
int main()
{
    double ans=0;
    int n,w,b,i=1;
    scanf("%d%d",&w,&b);
    n=w+b;
   nv
[w]=dra
[w]=1;
    for(int i=n;i>0;)
    {
        if(i>0)i--;
        else break;
        for(int j=0;j<=w;j++)
        {
            ans+=dra[i+1][j+1]*(j+1)*1.0/(i+1);//公主胜利
            nv[i][j]=dra[i+1][j]*(i+1-j)*1.0/(i+1);//没胜利,继续比,下面的龙总不胜利。
        }
        if(i>0)i--;
        else break;
        for(int j=0;j<=w;j++)dra[i][j]=nv[i+1][j]*(i+1-j)*1.0/(i+1);
        if(i>0)i--;
        else break;
        for(int j=0;j<=w;j++)
            dra[i][j]=dra[i+1][j]*(i+1-j)*1.0/(i+1)+dra[i+1][j+1]*(j+1)*1.0/(i+1);
    }
    printf("%.9lf\n",ans);
    return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: