题意:变成了告诉每个操作的成功概率,并且得分是三次方
一样....分别维护$x,\ x^2,\ x^3$的期望就行了
注意$x^3$是我们最终求的得分,即使失败得分也要累加上之前的
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> using namespace std; typedef long long ll; const int N=1e5+5; inline int read(){ char c=getchar();int x=0,f=1; while(c<‘0‘||c>‘9‘){if(c==‘-‘)f=-1;c=getchar();} while(c>=‘0‘&&c<=‘9‘){x=x*10+c-‘0‘;c=getchar();} return x*f; } int n; double a,f[N][3]; int main(){ freopen("in","r",stdin); n=read(); for(int i=1;i<=n;i++){ scanf("%lf",&a); f[i][0]=(f[i-1][0]+1)*a; f[i][1]=(f[i-1][1]+2*f[i-1][0]+1)*a; f[i][2]=f[i-1][2]+(3*f[i-1][1]+3*f[i-1][0]+1)*a; } printf("%.1lf",f[n][2]); }
时间: 2024-10-22 21:53:57