【BZOJ 1419】Red is good期望dp

    xiaoxiao2021-03-26  29

    设f[i][j]表示还剩i张红牌,j张黑牌的期望得分,不难写出方程

    f[i][j]=max(0,(f[i-1][j]+1)*i/(i+j)+(f[i][j-1]-1)*j/(i+j));

    然后。。居然mle就只好滚动咯

    #include<cstdio> #include<cstring> #include<iostream> #define maxn 5021 using namespace std; double f[2][maxn]; int n,m; int main(){ scanf("%d%d",&n,&m); int pos=0; for(int i=1;i<=n;i++){ pos^=1;memset(f[pos],0,sizeof(f[pos])); for(int j=0;j<=m;j++){ if(!j)f[pos][j]=i*1.0; else f[pos][j]=max(0.0,(f[pos^1][j]+1.0)*i*1.0/(i+j)+(f[pos][j-1]-1.0)*j*1.0/(i+j)); } } printf("%.6lf",f[pos][m]-5e-7); return 0; }

    转载请注明原文地址: https://ju.6miu.com/read-662840.html

    最新回复(0)