码迷,mamicode.com
首页 > 其他好文 > 详细

TopCoder9915(期望dp)

时间:2019-03-14 01:00:13      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:滚动数组   循环   状态   def   using   return   span   name   opcode   

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)

标签:滚动数组   循环   状态   def   using   return   span   name   opcode   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!