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

    期望概率的dp。。。我怎么可能会。。。

    令f[i][j]表示还有i张红牌,j张黑牌时的期望最大收益

    于是有状态转移方程:f[i][j] = max(0, (1 + f[i - 1][j]) * i / (i + j) + (-1 + f[i][j - 1]) * j / (i + j))

    意思就是说要么就是抽一张牌获得收益的期望概率,要么就是0

    边界情况:i = 0, f[i][j] = 0; j = 0, f[i][j] = i

    注意输出啊啊啊啊啊!!!!

    "HINT

    输出答案时,小数点后第六位后的全部去掉,不要四舍五入."坑货。。。。

     1 /**************************************************************
     2     Problem: 1419
     3     User: rausen
     4     Language: C++
     5     Result: Accepted
     6     Time:2204 ms
     7     Memory:884 kb
     8 ****************************************************************/
     9  
    10 #include <cstdio>
    11 #include <algorithm>
    12  
    13 using namespace std;
    14 typedef double lf;
    15 const int N = 5010;
    16  
    17 int n, m, w;
    18 lf f[2][N];
    19  
    20 int main() {
    21   int i, j;
    22   scanf("%d%d", &n, &m);
    23   for (i = 1; i <= n; ++i, w ^= 1) {
    24     f[w][0] = i;
    25     for (j = 1; j <= m; ++j)
    26       f[w][j] = max((lf) 0, i / lf (i + j) * (f[!w][j] + 1) + j / lf (i + j) * (f[w][j - 1] - 1));      
    27   }
    28   printf("%.6lf
    ", f[!w][m] - 5e-7);
    29   return 0;
    30 }
    View Code
    By Xs酱~ 转载请说明 博客地址:http://www.cnblogs.com/rausen
  • 相关阅读:
    MySql数据库水平扩展过程
    (转)MySQL数据库水平切分的实现原理解析
    SVN安装使用
    servlet基础
    数据库读写分离的性能分析
    java的可变长参数
    java消息服务
    static/final成员与多态
    商业软件与开源软件
    托管堆
  • 原文地址:https://www.cnblogs.com/rausen/p/4266736.html
Copyright © 2011-2022 走看看