题意
给定(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} imes D_i))
即(x_i=(p_i+D_i-p_i imes D_i)x_{i-1}+A_i imes D_i),发现这是个一次函数的形式
令(F_i=k_ix+b_i),其中(k_i=p_i+D_i-p_i imes D_i,b_i=A_i imes D_i)
则对于一个随机的排列,最后的值为(F_{p_n}(F_{p_{n-1}}(cdots(F_{p_2}(F_{p_1}(0))))))
根据期望的线性性,我们考虑每个(b_i)的贡献,即(prodlimits_{j=1,j
eq i}^n(1+k_j))
考虑算出(p_{n-i})的(b_{p_{n-i}})的贡献,即((sumlimits_{l=1}^n b_l([x^i]prodlimits_{j=1,j
eq i}^n(1+k_jx))) imes i! imes (n-i-1)!)
用分治fft加速即可