首页 > 其他 > 详细

TopCoder9915(期望dp)

时间:2019-03-13 23:24:52      阅读:154      评论:0      收藏:0      [点我收藏+]

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)

原文:https://www.cnblogs.com/AlphaWA/p/10527361.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!