【BZOJ】4318 OSU! 期望

来源:互联网 发布:sql 最近7天记录 编辑:程序博客网 时间:2024/05/17 03:51

题目传送门

期望什么的好迷啊……我觉得我应该去补一补数学的……

考虑第i次操作,设当前操作前末尾最长的1的长度为x

  1. 如果操作失败,贡献为0
  2. 如果操作成功,贡献为(x+1)3x3=3x2+3x+1

那么期望为(1pi)×0+pi×(3x2+3x+1)

但是我们并不知道x具体为多少,于是可以维护xx2的期望,用来求出第i次操作的贡献。

附上AC代码:

#include <cstdio>using namespace std;const int N=1e5+10;double x,f[N],l[N],l2[N];int n;int main(void){    scanf("%d",&n);    for (int i=1; i<=n; ++i){        scanf("%lf",&x);        l[i]=(l[i-1]+1)*x;        l2[i]=(l2[i-1]+2*l[i-1]+1)*x;        f[i]=f[i-1]+(3*l2[i-1]+3*l[i-1]+1)*x;    }    return printf("%.1lf\n",f[n]),0;}