[BZOJ1419] Red is good(期望DP)
生活随笔
收集整理的這篇文章主要介紹了
[BZOJ1419] Red is good(期望DP)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
傳送門
?
逆推
只不過順序還是順著的,思想是逆著的
f[i][j]表示還剩下i張紅牌,j張黑牌的期望值
那么邊界是
f[i][0]=i,因為只剩i張紅牌
f[0][j]=0,只剩黑牌,顯然直接停止最優(yōu)
f[i][j] = max(0,i/(i+j)*f[i-1][j]+j/(i+j)*f[i][j-1])
空間不夠,開兩層即可
?
#include <cstdio> #include <iostream> #define N 5001int n, m; double f[2][N]; //逆推,f[i][j]表示還剩下i張紅牌,j張黑牌的期望 int main() {int i, j, now;scanf("%d %d", &n, &m);for(i = 0; i <= n; i++){now = i & 1;f[now][0] = i;for(j = 1; j <= m; j++)f[now][j] = std::max(0.0, 1.0 * i / (i + j) * (f[now ^ 1][j] + 1) + 1.0 * j / (i + j) * (f[now][j - 1] - 1));}printf("%.6lf\n", f[n & 1][m] - 0.0000005);return 0; }
轉(zhuǎn)載于:https://www.cnblogs.com/zhenghaotian/p/7577189.html
總結(jié)
以上是生活随笔為你收集整理的[BZOJ1419] Red is good(期望DP)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python第三天习题
- 下一篇: 关于Linux路由表的route命令