Luogu6132

可以发现就是让你求限制度数的根向树森林,每条边带颜色的计数之和。

易知必有 \(0\in S\),否则直接输出 \(0\) 即可。

考虑求出单颗树的 \(\rm EGF\)

\[f=z\sum_{a\in S}{f^a\over a!} \]

\[z=\frac f{\sum_{a\in S}{f^a\over a!}} \]

\(f\) 的复合逆为

\[f^{(-1)}=\frac z{\sum_{a\in S}{z^a\over a!}} \]

然后答案即为

\[\sum_i[{z^n\over n!}]{k^{n-i}f^i\over i!}=k^n[{z^n\over n!}]\exp\frac fk \]

众所周知,有另类 Lagrange Inversion

\[[z^n]H(F)=[z^n]HG'\left(\frac zG\right)^{n+1} \]

但是这里求导不方便,不如直接用扩展 Lagrange Inversion

\[[z^n]H(F)=\frac1n[z^{n-1}]H'\left(\frac zG\right)^n \]

\[k^n[{z^n\over n!}]\exp\frac fk=k^{n-1}[{z^{n-1}\over(n-1)!}]\exp\frac zk\left(\sum_{a\in S}{z^a\over a!}\right)^n \]

于是即求

\[k^{n-1}[{z^{n-1}\over(n-1)!}]\exp\frac zk\left(\sum_{a\in S}{z^a\over a!}\right)^n \]

\[[{z^{n-1}\over(n-1)!}]\exp z\left(\sum_{a\in S}{(kz)^a\over a!}\right)^n \\=\sum_t\binom{n-1}t[{z^t\over t!}]\left(\sum_{a\in S}{(kz)^a\over a!}\right)^n \]

……

怎么求呢?

注意到 \(z^n\) 是 D-finite 的,\(\sum_{a\in S}{(kz)^a\over a!}\) 是代数的,所以 \(\left(\sum_{a\in S}{(kz)^a\over a!}\right)^n\) 是 D-finite 的!

设其系数满足

……

满个鬼,不为左。

先打个暴力看看能不能拿 \(45pts\)


好,有 \(45pts\),我们继续。

\(F=\sum_{a\in S}{(kz)^a\over a!},G=F^n\),则

\[FG'=nF'G \]

于是 \(G\) 可以整式递推。

总所周知 \(\exp z\) 也可以整式递推,所以 \(H=e^zG\) 也可以整式递推!

求完系数后还要乘一个 \(n!\),这个也可以整式递推(快速阶乘算法,或者分段打表)。

至此,我们得到一个 \(O(\sqrt n\log n)\) 的做法,其中 \(|S|\) 作为常数忽略不计。

然而我也不会写整式递推,或者说快速阶乘算法太久没写忘得差不多了,因此代码咕咕咕。

以后有空了补代码吧。

posted @ 2022-09-22 09:36  myee  阅读(27)  评论(0编辑  收藏  举报