设E( )表示截止到i所获得的分数;
)表示截止到i所获得的分数;
对于到i点的每一个l,如果第i+1点为1,那么会新增分数3*l^2+3*l+1;
就有递推公式方程:
E( )=E(
)=E( )+p[i+1]
)+p[i+1] p*(3*l^2+3*l+1);(p代表截止到i获得长度l的概率);
p*(3*l^2+3*l+1);(p代表截止到i获得长度l的概率);
得:
E( )=E(
)=E( )+p[i+1]*(3*E(
)+p[i+1]*(3*E( )+3*E(
)+3*E( )+1);
)+1);
E( )=p[i+1]*(E(
)=p[i+1]*(E( )+2*E(
)+2*E( )+1);
)+1);
E( )=p[i+1]*(E(
)=p[i+1]*(E( )+1);
)+1);
不断更新这三个值;
#include
 using namespace std;
 #define LL long long
 const int N = 1e5 + 10;
 double x,y,z;
 double p[N],n;
 int  main() {
   cin>>n;
   for(int i=1;i<=n;i++) cin>>p[i];
   for(int i=1;i<=n;i++)
   {  
      x+=p[i]*(3*y+3*z+1);
      y=p[i]*(y+2*z+1);     
        z=p[i]*(z+1);
   }
   printf("%.1f\n",x);
   
     return 0;    
 }