Live2D

题解 烷基计数 加强版 加强版

题目传送门

Description

问树大小为 \(n\),每个节点的儿子个数 \(\le 3\) 的本质不同树的个数。不考虑儿子之间的顺序。

\(n\le10^5\)

Solution

因为这个题跟多项式关系比较大,所以就没有放到 Polya 定理学习笔记里面。

我们可以看出,假设我们设 \(F(x)\) 表示答案的普通型生成函数,那么,我们就有:

\[F(x)=x\frac{F(x)^3+3F(x^2)F(x)+2F(x^3)}{6}+1 \]

个人觉得比较显然,直接拿 Polya 定理爆艹就行了。

问题就是怎么求这个东西,我们其实可以使用牛顿迭代法(分治 \(\text{FFT}\) 应该也行,但是是 \(\log^2n\) 的,所以就没有写)。

我们可以假设我们要求 \(F(x)\) 使得 \(G(F(x))\equiv 0\pmod{x^n}\),其中 \(G(F(x))=x\frac{F(x)^3+3F(x^2)F(x)+2F(x^3)}{6}+1-F(x)\)

然后就是牛顿迭代法标准套路了。假设已求出 \(H(x)\) 使得 \(G(H(x))\equiv 0\pmod{x^{\lceil\frac{n}{2}\rceil}}\),那么,我们就有:

\[F(x)\equiv H(x)-\frac{G(H(x))}{G^{'}(H(x))}\pmod{x^n} \]

问题就是如何求出 \(G^{'}(H(x))\) 了。主要是 \(H(x^2)\)\(H(x^3)\) 怎么求导。

其实,因为我们现在已经知道 \(H(x^2)\)\(H(x^3)\)\(\pmod{x^n}\) 的表达式了,所以,它们可以当常数,那么,

\[G^{'}(H(x))=x\frac{3H(x)^2+3H(x^2)}{6}-1 \]

时间复杂度 \(\Theta(n\log n)\),我的实现比较丑,所以不是很快。

posted @ 2021-03-11 22:20  Dark_Romance  阅读(63)  评论(0编辑  收藏  举报