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|\) 作为常数忽略不计。
然而我也不会写整式递推,或者说快速阶乘算法太久没写忘得差不多了,因此代码咕咕咕。
以后有空了补代码吧。
本文来自博客园,作者:myee,转载请注明原文链接:https://www.cnblogs.com/myee/p/Luogu-solution-p6132.html