期望DP
#include<iostream>
#include<cstdio>
using namespace std;
int n;
double x,a,b,c;
int main()
{
scanf("%d",&n);
while (--n)
{
scanf("%lf",&x);
c+=((a+b)*3+1)*x;
b=(b+a*2+1)*x;
a=(a+1)*x;
}
printf("%.1f\n",c);
return 0;
}
期望DP
#include<iostream>
#include<cstdio>
using namespace std;
int n;
double x,a,b,c;
int main()
{
scanf("%d",&n);
while (--n)
{
scanf("%lf",&x);
c+=((a+b)*3+1)*x;
b=(b+a*2+1)*x;
a=(a+1)*x;
}
printf("%.1f\n",c);
return 0;
}