标签:define cpp cst math names 期望 clu class code
快CSP了写点联赛题水水博客不过分吧……
首先立方的期望和显然不是期望和的立方,那么我们考虑从一个差分的角度来看
设\(x_1,x_2,x_3\)分别表示到当前位置为止,连续长度的期望和,平方期望和,立方期望和
考虑若当前位置为\(1\),对立方期望和的贡献为\((x+1)^3=x^3+3x^2+3x+1\),乘上概率就是\(x_3=p_i\times (x_3+3x_2+3x_1+1)\)
对平方期望和以及期望和的处理方式显然是同理的,然后我们考虑在某个位置断开可以使之前的答案被统计,因此\(ans+=(1-p_i)\times x_3\),并在最后一个位置结束后记得加上最后一段的贡献
#include<cstdio>
#define RI register int
#define CI const int&
using namespace std;
int n; double p,ans,x1,x2,x3;
int main()
{
RI i; for (scanf("%d",&n),i=1;i<=n;++i)
scanf("%lf",&p),ans+=(1-p)*x3,x3=p*(x3+3*x2+3*x1+1),x2=p*(x2+2*x1+1),x1=p*(x1+1);
return printf("%.1lf",ans+x3),0;
}
标签:define cpp cst math names 期望 clu class code
原文地址:https://www.cnblogs.com/cjjsb/p/13912775.html