有 n 个操作,有 Ai 的概率成功,连续成功 x 次 对答案的贡献是 x ^ 3,断掉就要重新记,求期望的答案
( 期望DP )这道题和 bzoj3450 一样,不过要注意的是平方的期望不等于期望的平方!
#include <cstdio>
#include <algorithm>
using namespace std;
const int MAX_N = 100005;
int n;
double a[MAX_N], g[MAX_N], g2[MAX_N], f[MAX_N];
int main()
{
scanf("%d", &n);
for(int i = 1; i <= n; i ++){
scanf("%lf", &a[i]);
g[i] = (g[i - 1] + 1) * a[i];
g2[i] = (g2[i - 1] + 2 * g[i - 1] + 1) * a[i];
f[i] = f[i - 1] + (3 * g2[i - 1] + 3 * g[i - 1] + 1) * a[i];
}
printf("%.1lf\n", f[n]);
return 0;
}