还是nei句老话:你只能决定决策,不能决定结果orz。
简直哲学。
【代码】
//bzoj 4318 OSU!
#include<iostream>
#include<cstring>
#include<cstdio>
#define ll long long
#define M(a) memset(a,0,sizeof a)
#define fo(i,j,k) for(i=j;i<=k;i++)
using namespace std;
const int mxn=100005;
int n,m;
double dp[mxn],l1[mxn],l2[mxn],p[mxn];
int main()
{
int i,j;
scanf("%d",&n);
fo(i,1,n) scanf("%lf",&p[i]);
dp[n]=l1[n]=l2[n]=p[n];
for(i=n-1;i>=1;i--) l1[i]=(l1[i+1]+1)*p[i];
for(i=n-1;i>=1;i--) l2[i]=(l2[i+1]+2*l1[i+1]+1)*p[i];
for(i=n-1;i>=1;i--) dp[i]=dp[i+1]+(3*l2[i+1]+3*l1[i+1]+1)*p[i];
printf("%.1lf\n",dp[1]);
return 0;
}