Luogu P1654 OSU!

快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;
}
posted @ 2020-11-02 09:06  空気力学の詩  阅读(95)  评论(0编辑  收藏  举报