code:
#include <bits/stdc++.h> #define N 2004 #define LL long long #define setIO(s) freopen(s".in","r",stdin) using namespace std; double p[N][N],f[N][N]; int main() { // setIO("input"); int i,j,n; scanf("%d",&n), p[0][0]=1; double ans=0.0; for(i=0;i<n;++i) { p[i+1][1]+=p[i][0]/2, f[i+1][1]+=(f[i][0]+p[i][0])/2; p[i+1][0]+=p[i][0]/2, f[i+1][0]+=(f[i][0]+p[i][0])/2; for(j=1;j<n;++j) { p[i+1][j+1]+=p[i][j]/2, f[i+1][j+1]+=(f[i][j]+p[i][j])/2; p[i+1][j-1]+=p[i][j]/2, f[i+1][j-1]+=(f[i][j]-p[i][j])/2; } } for(i=0;i<=n;++i) ans+=f[n][i]; printf("%.3f\n",ans); return 0; }
loj #6191. 「美团 CodeM 复赛」配对游戏 期望dp
原文:https://www.cnblogs.com/guangheli/p/11799139.html