拉格朗日反演的板子题;
拉格朗日反演用来求多项式的复合逆,大概就是有两个多项式\(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\),套上面的反演公式就可以了;