GFOJ470(dhr_dalao)

7 篇文章 0 订阅

http://www.gdfzoj.com/oj/problem/470
Problem Description
桌面上有R张红牌和B张黑牌,随机打乱顺序后放在桌面上,开始一张一张地翻牌,翻到红牌得到1美元,黑牌则付出1美元。可以随时停止翻牌,在最优策略下平均能得到多少钱。 输出答案时,小数点后第六位后的全部去掉,不要四舍五入.

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

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

Sample Input
5 1

Sample Output
4.166666

设f[i,j]为拿i张红牌,拿j张黑牌的期望,则

f(i,j)=ii+j(f(i1,j)+1)+ji+j(f(i,j1)1);

#include <cstdio> 
double f[5010][5010];
int R,B;

int main(){
    scanf("%d%d",&R,&B);
    for (int i=0; i<=R; i++)
        for (int j=0; j<=B; j++){
            if (i>0) f[i][j]+=(double)i/(double)(i+j)*(f[i-1][j]+1);
            if (j>0) f[i][j]+=(double)j/(double)(i+j)*(f[i][j-1]-1);
            if (f[i][j]<0) f[i][j]=0;
        }
    printf("%.6f",f[R][B]-0.0000005);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值