BZOJ 1419 Red is good【期望DP】
阿新 • • 發佈:2018-12-15
表示選了張紅牌,張黑牌的最優期望得分。
那麼接下來,有的可能+1分,有的可能-1分,所以不難寫出狀態轉移方程:
然後很顯然,需要滾動一下第一維
#include <cmath> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #define ll long long #define rep(i,x,y) for(ll i=(x);i<=(y);i++) #define repl(i,x,y) for(ll i=(x);i<(y);i++) #define repd(i,x,y) for(ll i=(x);i>=(y);i--) using namespace std; const ll N=5e3+5; const ll Inf=1e18; ll n,m,cur; double f[2][N]; int main() { scanf("%lld%lld",&n,&m); rep(i,1,n) { cur^=1; f[cur][0]=i*1.0; rep(j,1,m) f[cur][j]=max((double)0,(1+f[cur^1][j])*((double)i/(i+j))+(f[cur][j-1]-1)*((double)j/(i+j))); } printf("%.6lf",f[cur][m]); return 0; }