一个点的贡献即$(x+1)^3-x^3=3x^{2}+3x+1$(x表示结尾的长度),由于期望的可加性,分别维护末尾序列长度平方的期望,长度的期望(不能一起维护,因为后者平方并不是前者),直接计算即可
1 #include<bits/stdc++.h> 2 using namespace std; 3 int n; 4 double p,e1,e2,ans; 5 int main(){ 6 scanf("%d",&n); 7 for(int i=1;i<=n;i++){ 8 scanf("%lf",&p); 9 ans+=p*(3*e2+3*e1+1); 10 e2=(e2+2*e1+1)*p; 11 e1=(e1+1)*p; 12 } 13 printf("%.1f",ans); 14 }