*Codeforces891E. Lust

$n leq 5000$的数列,$k leq 1e9$次操作,每次随机选一个数-1,然后把其他数的积加入答案。问最后答案期望,$mod 1e9+7$。

略微观察可以发现答案=初始数列的积-最终数列的积。所以就是求最终数列的积的期望。证明的话,可以归纳法,

$新答案=(k次操作后的数列-(k+1)次操作后的数列)+(原数列-k次操作后的数列)$

$=原数列-(k+1)次操作后的数列$。

接下来就求最终数列的积了。$b_i$--第$i$个数减少的次数,这里要枚举所有$b_i$,然后$E$表示最终数列积的期望,$E=sum_{sum_{i=1}^nb_i=k}frac{frac{k!}{prod_{1}^{n}b_i}}{n^k}prod_{i=1}^{n}(a_i-b_i)=frac{k!}{n^k} sum_{sum_{i=1}^n b_i=k} frac{a_i-b_i}{b_i!}$

$sum b_i=k$的条件容易让人联想到:多个多项式乘积的第$k$项系数。那就把$frac{k!}{n^k}$先不理了,转生成函数:

$F(x)=prod_{i=1}^{n}sum_{j=0}^{infty}frac{a_i-j}{j!}x^j$

$=prod_{i=1}^n(sum_{j=0}^{infty}frac{a_i*x^j}{j!}-sum_{j=1}^{infty}frac{x*x^{j-1}}{(j-1)!})$

$=prod_{i=1}^{n}(a_i-x)e^x$

$=e^{nx}prod_{i=1}^{n}(a_i-x)$

非常好。现求它的第$k$项系数。后面那坨由于$n$不大直接$n^2$dp一下即可。($f(i,j)$--前$i$个括号里有$j$个选了常数项)设其第$i$项系数$c_i$。

前面$e^{nx}$直接泰勒展开。

然后两个多项式相乘,就得到$_{[x^k]}F(x)=sum_{i=0}^{n}c_ifrac{n^{k-i}}{(k-i)!}$

然后再乘上之前丢掉的$frac{k!}{n^k}$,得到$E=sum_{i=0}^{n}c_ifrac{k^{underline{i}}}{n^i}$。搞定。

原文地址:https://www.cnblogs.com/Blue233333/p/8757049.html