zoukankan      html  css  js  c++  java
  • Red is good

    题目描述

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

    输入

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

    输出

    在最优策略下平均能得到多少钱。
    solution
    f[i][j]表示当前拿i个红球,j个黑球时的期望钱数
    f[i][j]=max(0,( f[i-1][j]+1)*(i/(j+i)) + (f[i][j-1]-1)*(j/(i+j)) )
    f[i][0]=i
    由于内存,开滚动数组
    (一开始想反着定义来着)
     1 #include<cstdio>
     2 #include<cstring>
     3 #include<iostream>
     4 #define dd double
     5 using namespace std;
     6 
     7 int R,B,now;
     8 dd f[2][5066];
     9 
    10 int main(){
    11     
    12     scanf("%d%d",&R,&B);
    13     
    14     now=0;
    15     dd temp;
    16     for(int i=1;i<=R;++i)
    17     {
    18         now^=1;
    19         f[now][0]=i;
    20         for(int j=1;j<=B;++j)
    21         {
    22             temp=(f[now][j-1]-1)*(dd)(j)/(dd)(i+j)+(f[now^1][j]+1)*(dd)(i)/(dd)(i+j);
    23           f[now][j]=temp>0?temp:0;
    24         }
    25     }
    26     printf("%.6lf",f[now][B]-0.0000005);
    27     
    28     //while(1);
    29 }
    code
  • 相关阅读:
    支持向量机SVM知识点概括
    决策树知识点概括
    HDU 3081 Marriage Match II
    HDU 3572 Task Schedule
    HDU 4888 Redraw Beautiful Drawings
    Poj 2728 Desert King
    HDU 3926 Hand in Hand
    HDU 1598 find the most comfortable road
    HDU 4393 Throw nails
    POJ 1486 Sorting Slides
  • 原文地址:https://www.cnblogs.com/A-LEAF/p/7423442.html
Copyright © 2011-2022 走看看