zoukankan      html  css  js  c++  java
  • 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;
    } 
  • 相关阅读:
    257. Binary Tree Paths
    poj2406 kmp
    hust1010 kmp
    hdu1358 kmp的next数组
    hdu3746 kmp求循环节
    hdu1686字符串kmp
    hdu2087kmp
    hdu1711kmp
    poj3067树状数组求逆序数
    poj1159二维树状数组
  • 原文地址:https://www.cnblogs.com/harden/p/6498158.html
Copyright © 2011-2022 走看看