loj 1030
注意了,求期望很多时候都是倒推的,而这所谓的倒推主要是指与目标距离之间的“步长大小”,与目标相距为n即为所求,也就是dp【0】
#include <iostream> #include <algorithm> #include <cstring> #include <cstdio> using namespace std; #define N 110 int main() { int T,iCase=1; int n,a[N]; double dp[N]; scanf("%d",&T); while(T--) { scanf("%d",&n); memset(dp,0,sizeof(dp)); for(int i=1;i<=n;i++) scanf("%d",&a[i]); for(int i=n;i>=1;i--) { dp[i]=a[i]; double t=0; int d=min(6,n-i); if(d<=0) continue; for(int j=1;j<=d;j++) { t+=dp[i+j]; } dp[i]+=t/d; } printf("Case %d: ",iCase++); printf("%.10f\n",dp[1]); } return 0; }