这道题只是想告诉我们只有两个期望无关时才可乘,因此平方的期望不等于期望的平方。。。
需要维护f1[i]表示到i连续的个数的期望,f2[i]表示到i连续的个数平方的期望,f3[i]表示到i连续的个数立方的期望
#include <bits/stdc++.h>
using namespace std;
#define N 110000
int n;
double f1[N],f2[N],f3[N],pr[N],ans;
int main()
{
//freopen("tt.in","r",stdin);
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%lf",&pr[i]);
for(int i=1;i<=n;i++)
{
f1[i]=pr[i]*(f1[i-1]+1);
f2[i]=pr[i]*(f2[i-1]+2*f1[i-1]+1);
f3[i]=pr[i]*(f3[i-1]+3*f2[i-1]+3*f1[i-1]+1);
ans+=(1-pr[i])*f3[i-1];
}
ans+=f3[n];
printf("%.1lf\n",ans);
return 0;
}
本文介绍了一种使用概率期望解决特定问题的方法,通过维护一维数组记录连续事件出现次数的期望值及其幂次来求解复杂问题。代码示例展示了如何递推地更新这些期望值,并最终得到所需的答案。
1755

被折叠的 条评论
为什么被折叠?



