【BZOJ 3684】大朋友和多叉树

题目

拉格朗日反演的板子题;

拉格朗日反演用来求多项式的复合逆,大概就是有两个多项式\(G(x),F(x)\),满足\(g_0\neq 0,f_0\neq 0\),且\(F(G(x))=x\),或是\(G(F(x))=x\);就有

\[[x^n]F(x)=\frac{1}{n}[x^{-1}]\frac{1}{G^{n}(x)}\]

证明看这位老鸽的吧。

有点吓人的是\(x^{-1}\)是个啥,还有\(G^n(x)\)没有逆咋求啊;

先让右边整体平移一个\(x^n\),有

\[[x^n]F(x)=\frac{1}{n}[x^{n-1}]\frac{x^n}{G^{n}(x)}\]

我们发现\(x^n\)\(G^n(x)\)都没有常数项,于是我们可以都往左平移一位,就有

\[[x^n]F(x)=\frac{1}{n}[x^{n-1}]\frac{1}{(\frac{G(x)}{x})^n}\]

于是我们利用多项式\(\exp\)就能在\(O(n\log n)\)的时间内求出\(F(x)\)某一项的值了;

对于这道题,我们设答案的生成函数为\(F(x)\)\(G(x)=\sum_{i\in S}x^i\),不难发现几个儿子就是搞几个\(F(x)\)卷起来;

于是\(G(F(x))+x=F(x)\),移项可得\(F(x)-G(F(x))=x\),构造一个多项式\(D(x)=x-\sum_{i\in S}x^i\),则\(D(F(x))=x\),套上面的反演公式就可以了;

猜你喜欢

转载自www.cnblogs.com/asuldb/p/12307387.html