题目大意:
期望的平方不等于平方的期望。
设 $x$ 表示以第 $i-1$ 位结尾的最长的连续的 $1$ 的长度,现加入第 $i$ 位的 $1$,期望得分会增加
下面是 $E(x^2)$ 的求解过程
$E(x)$ 就是期望长度了。
设 $g$ 表示 $E(x)$,$h$ 表示 $E(x^2)$,$f$ 表示期望得分,转移方程见代码。
#include <cstdio>
const int N = 100005;
int n; double p[N], f[N], g[N], h[N];
int main() {
scanf("%d", &n);
for (int i = 1; i <= n; ++i) scanf("%lf", &p[i]);
for (int i = 1; i <= n; ++i) {
g[i] = p[i] * (g[i-1] + 1);
h[i] = p[i] * (h[i-1] + 2 * g[i-1] + 1);
f[i] = p[i] * (f[i-1] + 3 * (h[i-1] + g[i-1]) + 1) + (1 - p[i]) * f[i-1];
}
printf("%.1lf", f[n]);
return 0;
}
时间复杂度 $O(n)$