指数型生成函数.
给定 $n$ 个数 $a_1,a_2,\dots ,a_n$ 和一个初值为 $0$ 的计数器 $cnt$ ,执行以下操作 $k$ 次:
在 $1,2,\dots,n$ 中等概率随机选择一个数 $i$ ,令 $cnt$ 加上 $\prod_{j\neq i}a_j$,然后把 $a_i$ 减 $1$ .
求 $k$ 次操作后计数器 $cnt$ 的值的期望模 $10^9+7$ .
$n\le 5\times 10^3, k\le 10^9$ .
考虑每次的贡献是 $\prod_{j\neq i} a_j$ ,然后将 $a_i$ 减掉 $1$ ,这可以看成是 $\prod_j a_j-\prod_j a_j’$ ,即减掉前后所有数乘积之差.
$k$ 次操作的贡献会抵消成 $\prod a_i-\prod (a_i-b_i)$, 其中 $b_i$ 表示 $a_i$ 这个数被在 $k$ 次操作中一共被减了多少次.
前面的乘积是确定的,只用算后面那个乘积的期望,可以写出这个问题的 EGF,
$$
F_a(x)=\sum \frac{a-i}{i!}x^i=e^x(a-x)\\
G(x)=\prod_{i=1}^n F_{a_i}(x)=e^{nx}\prod_{i=1}^n(a_i-x)
$$
所求即为 $\frac{k!}{n^k}[x^k]G(x)$ , 可以暴力求出 $\prod_{i=1}^n(a_i-x)$ 每项系数,再考虑每一项与 $e^{nx}$ 卷积对答案贡献即可.
时间复杂度 $O(n^2)$ .
1 | //%std |