TopCoder9915(期望dp)

Posted alphawa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TopCoder9915(期望dp)相关的知识,希望对你有一定的参考价值。

1.还是逆向。

2.状态是还剩红i黑j张时的期望,这样从0,0往R,B推。注意因为是逆着的,所以到了某一步发现期望为负时直接f[i][j]归零,意义是这之后(在递推中算是这之前)的都不摸了,到这就停(根据题意随时可以停手),所以相当于是从这个时候开始摸,所以为0.

3.滚动数组因为是无视j的,所以j和j-1要无形中体现出来,所以j放外层循环。

 1 #include <cstdio>
 2 #include <algorithm>
 3 using namespace std;
 4 
 5 typedef double db;
 6 const int maxn = 5005;
 7 
 8 class RedIsGood {
 9     public:
10         db f[maxn];
11         db max(db a, db b) {
12             return a > b ? a : b;
13         }
14         db getProfit(int R, int B) {
15             for (int i = 0; i <= R; i++)    f[i] = i;
16             for (int j = 1; j <= B; j++) {
17                 for (int i = 1; i <= R; i++) {
18                     f[i] = max(0, (db)(f[i - 1] + 1) * i / (i + j) + (db)(f[i] - 1) * j / (i + j));
19                 }
20             }
21             return f[R];
22         }
23 };

 

以上是关于TopCoder9915(期望dp)的主要内容,如果未能解决你的问题,请参考以下文章

TopCoder SRM420 Div1 500pt RedIsGood

[Topcoder]ZigZag(dp)

PossibleOrders TopCoder - 1643

[TopCoder]Seatfriends

Topcoder 10689TheSoccerDivOne

topcoder-srm701-div2-900 博弈计算二进制位1的个数dp状态压缩