首页 > 其他 > 详细

Red is good题解

时间:2021-05-22 23:47:53      阅读:22      评论:0      收藏:0      [点我收藏+]

其实就是一个递推式
求选牌的期望
double一个f[i][j]表示还剩i个红牌,j个黑牌
f[i][j]=i/(i+j)*(f[i-1][j]+1)+j/(i+j)*(f[i][j-1]-1)
注意i>0时,前半部分成立,因为i=0时,i-1=-1  会re
同理j>0
!!!!!!!!!若f[i][j]<0 则把f[i][j]赋成0
因为f[i][j]<0还不如不选(此处的不选指一张都不选)
小窍门:可以直接-0.0000005以达成不四舍五入输出六位小数的目的
代码:
```cpp
#include<bits/stdc++.h>
using namespace std;
int a,b;
double f[5010][5010];
int main()
{
    cin>>a>>b;
    for(int i=0;i<=a;i++)
        for(int j=0;j<=b;j++)
        {
            if(i>0)    f[i][j]=1.0*i/(i+j)*(f[i-1][j]+1);
            if(j>0)    f[i][j]+=1.0*j/(i+j)*(f[i][j-1]-1);
            if(f[i][j]<0)    f[i][j]=0;
        }
    printf("%.6lf",f[a][b]-0.0000005);
}

Red is good题解

原文:https://www.cnblogs.com/hzfeichang/p/14799459.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!