多项式入门
1. 生成函数基础
问题:有两个背包,第一个背包有一个重量为 \(1\) 的物品,两个重量为 \(3\) 的物品,第二个背包里有一个重量为 \(3\) 的物品,一个重量为 \(4\) 的物品,从两个背包中各选一个物品,求最后选择的重量和为 \(i\) 的方案数。
设我们从第一个背包内选重量为 \(x\) 的物品的方案数为 \(a_x\),从第二个选的方案数为 \(b_x\),重量和为 \(x\) 的方案数为 \(c_x\)。
则有如下关系:
我们称为卷积。
而我们发现我们熟知的多项式乘法也是卷积的形式,因此 我们可以设 \(A(x)=\sum a_ix^i\),\(B(x)=\sum b_ix^i\),\(C(x)=\sum c_ix^i\)。这里的 \(x\) 其实没有实际意义,我们仅关系它的指数和系数。
因此有 \(C(x)=A(x)B(x)\)。
如果是多个背包,我们从每个里面选一个,最终的生成函数就是每个背包的生成函数乘起来。
2. 多项式基本运算
加减法:\(A(x)\pm B(x)=\sum (a_i\pm b_i)x^i\)。
乘法:\(A(x)B(x)=\sum_{i=0}(\sum_{j=0}^ia_jb_{i-j})x^i\)
求导:\(A'(x)=\sum_{i=1} ia_ix^{i-1}\)
不定积分:\(\int A(x)dx=\sum_{i=1} \frac{a_{i-1}}{i}x^i\)
3. 多项式牛顿迭代
问题:解方程 \(F(G(x))\equiv 0\pmod x^n\),其中 \(F(x)\) 已知。
在这里我们通常是求出 \(F(H(x))\equiv 0\pmod{x^m}\),用 \(H(x)\) 推导出 \(F(G(x))\equiv 0\pmod{x^{2m}}\)。
首先,我们将 \(F(G(x))\) 在 \(H(x)\) 处进行泰勒展开,可得:
\(F(G(x))\equiv F(H(x))+F'(H(x))(G(x)-H(x))\pmod{x^{2m}}\)。
因此:\(G(x)\equiv H(x)-\frac{F(H(x))}{F'(H(x))}\pmod{x^{2m}}\)
注意这里的 \(F'(H(x))\) 实际上是对 \(H(x)\) 求导,即 \(\frac{dF(H)}{dH}\)。
4. 一些常用等式
二项式定理:\((1+x)^n=\sum_{i=1}^n \binom{n}{i} x^i\)。
范德蒙德卷积:\(\sum_{i=0}^p \binom{n}{i}\binom{m}{p-i}=\binom{n+m}{p}\)。
\((\frac{1}{1-x})^n=\sum \binom{n+i-1}{n-1} x^i\)
\(e^{F(x)}=\sum_{i=0} \frac{F(x)^i}{i!}\)
\(ln(1-x)=-\sum_{i=1} \frac{x^i}{i}\)
5. 拉格朗日反演
若多项式 \(F(x),G(x)\) 满足 \(F(G(x))=x\),则称 \(F\) 与 \(G\) 互为复合逆。
普通拉格朗日反演:\([x^n]F(x)=\frac{1}{n}[x^{n-1}](\frac{x}{G(x)})^n\)。
扩展拉格朗日反演:\([x^n]H(F(x))=\frac{1}{n}[x^{n-1}]H'(x)(\frac{x}{G(x)})^n\)。
另类拉格朗日反演:\([x^n]F^k(x)=[x^{n-k}]G'(x)(\frac{x}{G(x)})^{n+1}\)。
另类也可以扩展一下:\([x^n]H(F^k(x))=[x^n]H(x)G'(x)(\frac{x}{G(x)})^{n+1}\)。
6. 概率生成函数
比如做一件事,\(i\) 步完成的概率为 \(p_i\),那么我们可以设其生成函数 \(P(x)=\sum p_ix^i\)。
设这件事完成的概率为 \(p\),则 \(P(1)=p\)。
如果我们要求完成这件事的期望步数,则 \(E=P'(1)\)。
概率生成函数常常用于对于一个可能无限进行下去的过程进行分析,而最终代入 \(x\) 则可以转变为较为简单的等比数列求和等形式。
7. 例题:
luogu P4841
luogu P4389
luogu P5401
CF923E
CF623E
luogu P5824
fzoj 4140
luogu 6633
loj 6363
luogu 4548
loj 3647