多项式入门

1. 生成函数基础

问题:有两个背包,第一个背包有一个重量为 \(1\) 的物品,两个重量为 \(3\) 的物品,第二个背包里有一个重量为 \(3\) 的物品,一个重量为 \(4\) 的物品,从两个背包中各选一个物品,求最后选择的重量和为 \(i\) 的方案数。

设我们从第一个背包内选重量为 \(x\) 的物品的方案数为 \(a_x\),从第二个选的方案数为 \(b_x\),重量和为 \(x\) 的方案数为 \(c_x\)

则有如下关系:

\[c_i=\sum_{j=0}^i a_jb_{i-j} \]

我们称为卷积。

而我们发现我们熟知的多项式乘法也是卷积的形式,因此 我们可以设 \(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

posted @ 2022-03-13 12:12  夜螢光  阅读(158)  评论(0编辑  收藏  举报