杂题

题意

给定\(n\)个操作,有一个初始变量\(x=0\)
\(i\)次操作,有\(p_i\)的概率给\(x\)加上\(A_i\),有\(1-p_i\)的概率给\(x\)乘上\(D_i\)
随机一个排列\(p\),按\(p_1,p_2,\cdots,p_n\)的顺序依次执行操作,求\(x\)最后的期望

做法

若依次执行操作,令\(x_i\)为执行完前\(i\)次操作后的期望,有\(x_i=p_i(x_{i-1}+A_i)+(1-p_i)(x_{i-1}\times D_i)\)
\(x_i=(p_i+D_i-p_i\times D_i)x_{i-1}+A_i\times D_i\),发现这是个一次函数的形式
\(F_i=k_ix+b_i\),其中\(k_i=p_i+D_i-p_i\times D_i,b_i=A_i\times D_i\)
则对于一个随机的排列,最后的值为\(F_{p_n}(F_{p_{n-1}}(\cdots(F_{p_2}(F_{p_1}(0)))))\)

根据期望的线性性,我们考虑每个\(b_i\)的贡献,即\(\prod\limits_{j=1,j\neq i}^n(1+k_j)\)
考虑算出\(p_{n-i}\)\(b_{p_{n-i}}\)的贡献,即\((\sum\limits_{l=1}^n b_l([x^i]\prod\limits_{j=1,j\neq i}^n(1+k_jx)))\times i!\times (n-i-1)!\)
用分治fft加速即可

posted @ 2020-06-15 11:23  Grice  阅读(91)  评论(0编辑  收藏  举报