zoukankan      html  css  js  c++  java
  • BZOJ 1419 Red is good ——期望DP

    定义f[i][j]表示还剩i张红牌,j张黑牌的时候能取得的期望最大值

    显然有$f[i][j]=max(0,frac {i}{i+j}(f[i-1][j]+1)+ frac {j}{i+j}(f[i][j-1]-1))$

    然后直接DP即可,发现卡内存,滚动数组即可。

    #include <map>
    #include <cmath>
    #include <queue>
    #include <cstdio>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    using namespace std;
    #define F(i,j,k) for (int i=j;i<=k;++i)
    #define D(i,j,k) for (int i=j;i>=k;--i)
    #define ll long long
    #define mp make_pair
     
    int r,b,now,pre;
    double f[2][5005];
     
    int main()
    {
        now=1;pre=0;scanf("%d%d",&r,&b);
        F(i,0,r)
        {
            now^=1;pre^=1;f[now][0]=i;
            F(j,1,b) f[now][j]=max(0.0,1.0*i/(i+j)*(f[pre][j]+1)+1.0*j/(i+j)*(f[now][j-1]-1));
        }
        ll ans=f[now][b]*1000000;
        printf("%.6f
    ",1.0*ans/1000000);
    }
    

      

  • 相关阅读:
    Nginx之常用操作
    linux之信息查看
    KPI VS OKR
    python之jupyter安装与使用
    python进阶资源
    python之排序(sort/sorted)
    python之文件操作
    远程连接工具
    docker之本地连接
    Windows服务器连接
  • 原文地址:https://www.cnblogs.com/SfailSth/p/6669603.html
Copyright © 2011-2022 走看看