「loj - 2320」 「清华集训 2017」生成树计数

link。


对原式,使用 prufer 序列吧:

\[\begin{aligned} &\sum_{\sum_x p_x=n-2}\left(\frac{(n-2)!}{\prod_i p_i!}\right)\times \left(\prod_i a_{i}^{p_i + 1}\right)\times \left(\prod_i(p_{i} + 1)^{m}\right)\times \left(\sum_i(p_{i} + 1)^{m}\right) \\ =&(n-2)!\times\prod_i a_i \times \left(\sum_{\sum_x p_x=n-2}\left(\prod_i\frac{a_{i}^{p_i}(p_{i} + 1)^{m}}{p_i!}\right)\times \left(\sum_i(p_{i} + 1)^{m}\right)\right) \\ =&(n-2)!\times\prod_i a_i \times \left(\sum_{j=1}^{n}\sum_{\sum_x p_x=n-2}\left(\prod_{i\neq j}\frac{a_{i}^{p_i}(p_{i} + 1)^{m}}{p_i!}\right)\times \left(\frac{a_{j}^{p_j}(p_{j} + 1)^{2m}}{p_j!}\right)\right) \end{aligned} \]

冷静分析一波,记 \(P(x) = \sum_{i}\frac{(i + 1)^{2m}\times x^i}{i!}\)\(Q(x) = \sum_{i}\frac{(i + 1)^{m}\times x^i}{i!}\),则后面那个等于 \([x^{n-2}]\sum_{j=1}^{n}\left(\prod_{j\neq i}Q(a_ix)\right)P(a_j x)\)


利用一下 \(m\) 很小的性质:

\[\begin{aligned} Q(x) &= \sum_{i}\frac{(i + 1)^{m}\times x^i}{i!} \\ &= \sum_{i}\sum_{j}\binom{m}{j}\frac{i^j\times x^i}{i!} \\ &= \sum_{i}\sum_{j}\binom{m}{j}\frac{\sum_k {j\brace k}\binom{i}{k}k!\times x^i}{i!} \\ &= \sum_k\left(\sum_{j}\binom{m}{j}{j\brace k}\right)\sum_{i}\frac{x^i}{(i-k)!} \\ &= \sum_k\left(\sum_{j}\binom{m}{j}{j\brace k}\right)x^ke^x \\ \end{aligned} \]

如果记 \(g_k = \sum_{j}\binom{m}{j}{j\brace k}\),并记 \(G(x) = \sum g_kx^k\),则 \(Q(x) = G(x)e^x\)

同理可对 \(P(x)\) 进行处理得到 \(P(x) = F(x)e^x\)

注意到此时 \(F(x), G(x)\) 的次数为 \(O(m)\),于是我们考虑分治 fft 再乘上 \(e^{\sum a_ix}\)

由于只需要前 \(n\) 项,复杂度应为 \(O(nm\log n + n\log^2 n)\)


不用 \(m\) 很小的性质:

\[\begin{aligned} & \sum_{j=1}^{n}\left(\prod_{j\neq i}Q(a_ix)\right)P(a_j x) \\ =& \left(\sum_j(P/Q)(a_j x)\right)\times \left(\prod_{i}Q(a_ix)\right) \\ =& \left(\sum_j(P/Q)(a_j x)\right)\times \exp\left(\sum_{i}(\ln Q)(a_ix)\right) \\ \end{aligned} \]

冷静一下,我们考虑 \(\sum_i F(a_ix)\) 在干什么。

它的第 \(k\) 项系数为 \(f_k\times \sum_i a_i^k\),因此只需要考虑求出 \(\sum_i a_i^k\)

我们知道 \(\sum_k\left(\sum_i a_i^k\right)x^k = \sum_i \frac{1}{1 - a_ix}\),通分后分子分母都是可以分治 fft 的形式。

注意到通分后分子长得像分母求导。考虑 \(\frac{1}{1 - a_ix} = 1 + \frac{a_ix}{1 - a_ix}\),此时再通分分子就是分母求导再乘 \(-x\),因此只需要一次分治 fft。

你也可以考虑 \(\ln(\frac{1}{1 - a_ix}) = \sum_{j > 0} \frac{a_i^jx^j}{j}\),利用对数性质实现和转积。

posted @ 2019-12-30 13:21  Tiw_Air_OAO  阅读(177)  评论(0编辑  收藏  举报