CF891E

· · 个人记录

推广一个好玩的

一次操作若将 a_i 减一,则所有数的乘积会少 1\cdot \prod\limits_{j \ne i} a_j,恰好等于答案的增加量。

所以最终答案就是乘积的减少量,即

\prod a_i - \prod (a_i - b_i)

于是问题转化为求 \prod (a_i - b_i) 的期望。

如果对于每一个 a_i 都已知一个确定的 b_i,其中 \sum b_i = k,则可能的操作排列的数量是 \dfrac{k!}{\prod b_i!},所以期望就是

\dfrac{\dfrac{k!}{\prod b_i!}\cdot \prod (a_i - b_i)}{n^k} = \dfrac{k!}{n^k} \cdot \prod \dfrac{a_i - b_i}{b_i!}

对于后面这个,由于有要求 \sum b_i = k,考虑用多项式搞,然后发现形态长得像 EGF:

\begin{aligned} F_i(x) &= \sum_{j = 0}^{+\infty} \dfrac{a_i - j}{j!} x^j \\ &= a_i \cdot \sum_{j = 0}^{+\infty} \dfrac{x^j}{j!} - x \cdot \sum_{j = 0}^{+\infty} \dfrac{x^{j - 1}}{(j - 1)!} \\ &= (a_i - x) e^x \end{aligned}

那么

\begin{aligned} \prod_{i = 1}^n \dfrac{a_i - b_i}{b_i!} &= [x^k] \prod_{i = 1}^n F_i(x) \\ &= [x^k] e^{nx} \prod_{i = 1}^n (a_i - x) \\ &= [x^k] \sum_{j = 0}^{+\infty} \dfrac{(nx)^j}{j!} \prod_{i = 1}^n (a_i - x) \end{aligned}

我们设

\prod_{i = 1}^n (a_i - x) = \prod_{i = 0}^n f_i x^i

\begin{aligned} \prod_{i = 1}^n \dfrac{a_i - b_i}{b_i!} &= [x^k] \sum_{j = 0}^{+\infty} \dfrac{(nx)^j}{j!} \prod_{i = 0}^n f_i x^i \\ &= \sum_{i = 0}^{\min(n, k)} \dfrac{f_i n^{k - i}}{(k - i)!} \end{aligned}

就是右边取 x^i 那么左边就取 x^{k - i}

对于 f_i,本质上是 n 个一次函数的乘积,直接暴力 O(n^2)

但问题是最上面的式子中有个 \dfrac{k!}{n^k}k 太大无法计算,所以我们把式子代回去

\dfrac{k!}{n^k} \cdot \sum_{i = 0}^{\min(n, k)} \dfrac{f_i n^{k - i}}{(k - i)!} = \sum_{i = 0}^{\min(n, k)} \dfrac{f_i k^{\underline{i}}}{n^i}

Code