zoukankan      html  css  js  c++  java
  • bzoj 1419 Red is good(期望DP)

    【题意】

        R红B蓝,选红得1选蓝失1,问最优状态下的期望得分。

    【思路】

        设f[i][j]为i个Rj个B时的最优期望得分,则有转移式为:

            f[i][j]=max{ 0,(f[i-1][j]+1)*(i/(i+j))+(f[i][j-1]-1)*(j/(i+j)) }

        有i/(i+j)的可能性得1分,有j/(i+j)的可能性失1分,再加上原来的分数,则期望得分为上式。

        需要用下滚动数组。直接按位数输出采用的四舍五入的方法,所以还需要减去5e-7。

    【代码】

     1 #include<cstdio>
     2 #include<iostream>
     3 using namespace std;
     4 
     5 const int N = 5e3+10;
     6 
     7 int cur,R,B;
     8 double f[2][N];
     9 
    10 int main()
    11 {
    12     scanf("%d%d",&R,&B);
    13     for(int i=1;i<=R;i++) {
    14         cur^=1;
    15         f[cur][0]=i;
    16         for(int j=1;j<=B;j++)
    17             f[cur][j]=max((double)0,(1+f[cur^1][j])*((double)i/(i+j))+(-1+f[cur][j-1])*((double)j/(i+j)));
    18     }
    19     printf("%.6f",f[cur][B]-5e-7);
    20     return 0;
    21 }
  • 相关阅读:
    浏览器返回按钮不会触发onLoad事件
    js常用方法
    清除浮动
    Hbuilder快捷键
    页面跳转
    castapp.js颜色配置
    mui学习
    css 特殊使用技巧
    mui框架如何实现页面间传值
    从0到千万级访问量网站架构演变史
  • 原文地址:https://www.cnblogs.com/lidaxin/p/5301990.html
Copyright © 2011-2022 走看看