期望什么的好迷啊……我觉得我应该去补一补数学的……
考虑第
i
次操作,设当前操作前末尾最长的
- 如果操作失败,贡献为
0 。- 如果操作成功,贡献为 (x+1)3−x3=3x2+3x+1 。
那么期望为 (1−pi)×0+pi×(3x2+3x+1) 。
但是我们并不知道 x 具体为多少,于是可以维护
x 和 x2 的期望,用来求出第 i <script type="math/tex" id="MathJax-Element-32">i</script>次操作的贡献。附上AC代码:
#include <cstdio> using namespace std; const int N=1e5+10; double x,f[N],l[N],l2[N]; int n; int main(void){ scanf("%d",&n); for (int i=1; i<=n; ++i){ scanf("%lf",&x); l[i]=(l[i-1]+1)*x; l2[i]=(l2[i-1]+2*l[i-1]+1)*x; f[i]=f[i-1]+(3*l2[i-1]+3*l[i-1]+1)*x; } return printf("%.1lf\n",f[n]),0; }