Candy Life
Some thinking.
简单多项式

容易想到直接枚举树

$$ \sum_T\left(\prod_{i=1}^na_i^{d_i}d_i^m\right)\left(\sum_{i=1}^nd_i^m\right) $$

$$ \sum_T\sum_{i=1}^n a_i^{d_i}d_i^{2m}\prod_{j\neq i}a_j^{d_j}d_j^m $$

运用 $\mathrm{Prufer}$ 序列这一工具

$$ \sum_{i=1}^n\sum_{\sum k_j=n-2}\frac{(n-2)!}{\prod k_j!}a_i^{k_i+1}(k_i+1)^{2m}\prod_{j\neq i}(a_j^{k_j+1}(k_j+1)^m) $$

$$ (n-2)!\left(\prod_{j=1}^n a_j\right)\sum_{i=1}^n\sum_{\sum k_j=n-2}\frac{a_i^{k_i}(k_i+1)^{2m}}{k_i!}\prod_{j\neq i}\frac{a_j^{k_j}(k_j+1)^m}{k_j!} $$

$$ \begin{aligned} \left[{z^n}\right]F_i(z)&=\frac{a_i^n(n+1)^{2m}}{n!} \\
\left[{z^n}\right]G_i(z)&=\frac{a_i^n(n+1)^m}{n!} \end{aligned} $$

将非常数项写成卷积形式

$$ \left[{z^{n-2}}\right]\sum_{i=1}^n\frac{F_i(z)}{G_i(z)}\left(\prod_{i=1}^nG_i(z)\right) $$

问题变为快速求解这个卷积。设

$$ F(z)=\sum_{n=0} \frac{(n+1)^{2m}}{n!}z^n,G(z)=\sum_{n=0}\frac{(n+1)^m}{n!}z^n $$

则有

$$ F_i(z)=F(a_iz),G_i(z)=G(a_iz) $$

现在需要考虑对于任意

$$ H_i(z)=\sum_{n=0}a_i^nh_nz^n=\frac{1}{1-a_iz} $$

求解

$$ \begin{aligned} \sum_{i=1}^n H_i(z)=\sum_{i=1}^n\frac{1}{1-a_iz} \end{aligned} $$

因为连乘项是 $H_i(z)=\ln G(a_iz)$ 并且 $\exp$ 回原式,而连加项其实是 $H_i(z)=\frac{F(a_iz)}{G(a_iz)}$。对于这两部分都只需要求一遍 $\ln G(z)$ 和 $\frac{F(z)}{G(z)}$。

$$ u=\prod_{i=1}^n (1-a_iz) $$

则所求变为

$$ \frac{u'}{u} $$

使用分治 $\mathrm{NTT}$ 求出 $u$ 的值即可,时间复杂度为 $O(n \log^2 n)$


最后修改于 2021-08-08