偏口胡,若不严谨见谅……
以下多项式的运算是关于形如 \(f(x) = ...a_{-2}x^{-2} + a_{-1}x^{-1} + a_0 + a_1x ...\) 的“多项式”的。这允许我们对没有常数项的多项式求逆。
具体,如果 \(f(x) = x^t F(x)\) ,其中 \([x^0]F(x) \ne 0\),那么 \(\dfrac{1}{f(x)} = x^{-t} \cdot \dfrac{1}{F(x)}\) 。
当然 \(0\) 还是没有逆元。
那么有:
\[[x^0]f(x) = [x^0]g(x) = 0,[x^1]f(x) \ne 0,[x^1]g(x) \ne 0,f(g(x)) = x \to [x^n]f(x) = \frac{1}{n} [x^{n-1}](\frac{x}{g(x)})^n
\]
证明:
\[x=\sum_{i=1} [x^i]f(x) \cdot g^{i}(x)
\]
对两边求导:
\[1 = \sum_{i=1} [x^i]f(x) \cdot i\cdot g^{i-1}(x) \cdot g'(x)
\]
现在我们希望能得到 \([x^n]f(x)\) ,那么最好能通过一些转换使 \(i \ne n\) 时 \([x^i]f(x)\) 会带上一个 \(0\) 的系数。
注意到
\[i \ne -1 \to g^{i}(x) \cdot g'(x) = \frac{1}{i+1}[g^{i+1}(x)]'
\]
\[\forall g,[x^{-1}]g'(x) = 0
\]
那么把两边同时乘上 \(g^n(x)\) 的逆元,然后只考虑第 \(-1\) 项的系数。那么对于右式,只有 \(i=n\) 时需要考虑。
\[[x^{-1}][\frac{1}{g(x)}]^n = \sum_{i=1} [x^i]f(x) \cdot i \cdot[x^{-1}][ g^{i-n-1}(x) \cdot g'(x) ] = [x^n]f(x) \cdot n \cdot [x^{-1}]\frac{g'(x)}{g(x)}
\]
\[[x^{-1}]\frac{g'(x)}{g(x)} = [x^{-1}] \frac{\sum_{i=1}[x^i]g(x) \cdot i\cdot x^{i-2}}{\sum_{i=1}[x^i]g(x) \cdot x^{i-1}}
\]
这样分母就可以求逆,要考虑的只有常数项 \(\dfrac{1}{[x^1]g(x)}\) ;分子中要考虑的只有 \(-1\) 次项,即 \([x^1]g(x)\) 。
所以 \([x^{-1}]\dfrac{g'(x)}{g(x)}=1\) 。
那么得到
\[[x^n]f(x) = \frac{1}{n}[x^{-1}] [\frac{1}{g(x)}]^n = \frac{1}{n}[x^{n-1}] (\frac{x}{g(x)})^n
\]
有一个扩展,考虑多项式 \(h(x)\) ,若令 \(H(x) = h(f(x))\) ,那么有 \(H(g(x)) = h(x)\),再套用上面的分析,可以得到
\[[x^n]h(f(x)) = \frac{1}{n} [x^{n-1}] h'(x) \cdot (\frac{x}{g(x)})^{n}
\]
还有一个重要结论,对于两个幂级数 \(f,g\) ,若 \(f(g(x)) = x\) 则 \(g(f(x)) = x\) 。(没找到证明
例子:求 \(n\) 个点的不同构有根无标号二叉树数量。(也就是第 \(n\) 个卡特兰数的通项推导)
那么有
\[[x^0]f(x) = 1,[x^i]f(x) = \sum_{j=0}^{i-1}[x^j]f(x) \cdot [x^{i-1-j}]f(x) \to f(x)=f^2(x)+1
\]
为了拉格朗日反演,我们令 \(F(x) = x f(x)\) ,则有 \(F(x)=F^2(x)+x\) 。考虑令 \(G(F(x))=x\) ,那么容易得到 \(G(x) = x-x^2\)
上拉格朗日反演:
\[[x^n]F(x) = \dfrac{1}{n}[x^{n-1}](1-x)^{-n}\\
=\dfrac{1}{n} \binom{-n}{n-1}\cdot(-1)^{n-1}\\
=\dfrac{1}{n} \dfrac{(2n-2)!}{(n-1)!(n-1)!}=\dfrac{\dbinom{2n-2}{n-1}}{n}
\]
\[[x^n]f(x) = [x^{n+1}]F(x) = \dfrac{\dbinom{2n}{n}}{n+1}
\]
AT222H:Beautiful Binary Tree
显然当且仅当任何一个 \(1\) 结点可以花费一次操作上传到一个祖先 \(1\) 结点时,且根和所有叶子都是 \(1\) 结点时,这棵树合法。
等价于不能有两个相邻的 \(0\) 结点。
那么设 \(f_1(x)\) 表示根为 \(1\) 结点,且没有两个相邻 \(0\) 结点的生成函数, \(f_2(x)\) 表示根为 \(0\) 结点,且没有两个相邻 \(0\) 结点的生成函数,且其中 \([x^0]f_1(x) = 0,[x^0]f_2(x) = 1\)
二者有关系
\[f_2(x) = f_1^2(x)+2f_1(x)+1,f_1(x) = x[f_1(x)+f_2(x)]^2
\]
得到
\[f_1(x) = x[f_1^2(x)+3f_1(x)+1]^2
\]
这个时候已经可以牛迭了,复杂度 \(O(n\log n)\)
考虑拉格朗日反演,令
\[g(f_1(x))=x \to g(x) = \frac{x}{(x^2+3x+1)^2}
\]
\[[x^n]f_1(x) = \frac{1}{n}[x^{n-1}](x^2+3x+1)^{2n}\\
=\frac{1}{n}\sum_{i=0}\binom{2n}{i}3^{n-1-2i}\binom{2n-i}{n-1-2i}
\]
复杂度 \(O(n)\) 。讲个笑话,这是 ABC。