标签:
【题目大意】
假如这个01串使确定的,考虑每新增一个位置,如果这个位置是0 ,则贡献为0 ,否则贡献为(x+1)3−x3=3x2+3x+1 ,其中x 为加入之前最长的全1后缀的长度
现在这个问题变成了期望问题,那么我们只需要维护一个x 的期望和x2 的期望即可。注意平方的期望不等于期望的平方。
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cstdlib> 5 #include<algorithm> 6 using namespace std; 7 double l1[2],l2[2],f[2]; 8 int n; 9 10 int main() 11 { 12 scanf("%d",&n); 13 int cur=0; 14 for (int i=1;i<=n;i++,cur=1-cur) 15 { 16 double a1; 17 scanf("%lf",&a1); 18 l1[cur]=(l1[1-cur]+1)*a1; 19 l2[cur]=(l2[1-cur]+2*l1[1-cur]+1)*a1; 20 f[cur]=f[1-cur]+(3*l2[1-cur]+3*l1[1-cur]+1)*a1; 21 } 22 printf("%.1lf\n",f[1-cur]); 23 return 0; 24 }
标签:
原文地址:http://www.cnblogs.com/iiyiyi/p/5645048.html