• Red is good(bzoj 1419)


    Description

    桌面上有R张红牌和B张黑牌,随机打乱顺序后放在桌面上,开始一张一张地翻牌,翻到红牌得到1美元,黑牌则付出1美元。可以随时停止翻牌,在最优策略下平均能得到多少钱。

    Input

    一行输入两个数R,B,其值在0到5000之间

    Output

    在最优策略下平均能得到多少钱。

    Sample Input

    5 1

    Sample Output

    4.166666

    HINT

    输出答案时,小数点后第六位后的全部去掉,不要四舍五入.

    /*
      f[i][j]表示当前还剩i张红牌,j张黑牌的期望值。
      那么容易得到转移式:f[i][j]=max(0,i/(i+j)*(f[i-1][j]+1)+j/(i+j)*(f[i][j-1]-1))
      注意要此题卡空间,要用滚动数组。 
    */
    #include<cstdio>
    #include<iostream>
    #define N 5010
    using namespace std;
    double f[2][N];int R,B;
    double fmax(double x){
        if(x>0) return x;
        else return 0;
    }
    int main(){
        scanf("%d%d",&R,&B);
        for(int i=0;i<=R;i++,f[i&1][0]=i)
            for(int j=1;j<=B;j++)
                f[i&1][j]=fmax(1.0*i/(i+j)*(f[i+1&1][j]+1)+1.0*j/(i+j)*(f[i&1][j-1]-1));
        long long ans=f[R&1][B]*1000000;
        printf("%.6lf",(double)ans/1000000);
        return 0;
    } 
  • 相关阅读:
    laravel excel 导入
    linux 怎么解压
    mysql分表和表分区详解
    mysql主从复制windows-》linux
    Redis和Memcache的区别
    mysql group by 用法解析(详细)
    [置顶] mysql常用函数
    mysql测试数据库employees一些sql语句
    session入mysql
    session入库
  • 原文地址:https://www.cnblogs.com/harden/p/6498158.html
Copyright © 2020-2023  润新知