zoukankan      html  css  js  c++  java
  • bzoj 1419: Red is good

    1419: Red is good

    Time Limit: 10 Sec  Memory Limit: 64 MB
    Submit: 1163  Solved: 537
    [Submit][Status][Discuss]

    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,(f[i-1][j]+1) * (i/(i+j)) + (f[i][j-1]-1) * (j/(i+j))},因为可以随时停止摸牌,所以要对0取个max{}

    #include<bits/stdc++.h>
    #define ll long long
    #define D double
    using namespace std;
    D f[5005];
    int n,m,now,pre;
    int main(){
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;i++){
        	f[0]=i;
        	for(int j=1;j<=m;j++){
        		f[j]=(f[j]+1)*i/(double)(i+j)+(f[j-1]-1)*j/(double)(i+j);
        		if(f[j]<0) f[j]=0;
    		}
    	}
    	
    	f[m]=floor(f[m]*1000000);
    	printf("%.6lf
    ",f[m]/1000000);
    	
    	return 0;
    }
    
  • 相关阅读:
    SQLServer 时间差运算
    phpStudy
    解决Apache/PHP无法启动的问题
    apche的主配置文件)
    知识总结
    学完了js的知识,一起分享总结知识点
    JS的学习体会与分享
    SpringBoot -- pom.xml文件
    c++基本知识点
    c语言基本常识5
  • 原文地址:https://www.cnblogs.com/JYYHH/p/8602696.html
Copyright © 2011-2022 走看看