多项式全家桶学习笔记

· · 个人记录

\texttt{Preface}

做多项式题就像嗑药,出多项式题就像贩毒。—— 某 FJ 知名 OI 选手

多项式乘法

多项式求逆

给定 n - 1 次多项式 h(x),求 h ^ {-1} (x)\pmod{x ^ n}

题目可以转化成给定 h(x),求一个多项式 f(x),使得 g(f(x)) = f ^ {-1}(x) - h(x) = 0

根据多项式牛顿迭代,假设已经求出 f_0(x) 表示 \pmod{x ^ {\lfloor \frac{n}{2} \rfloor}} 意义下的答案,现在要求 f(x) 表示 \pmod{x ^ n} 意义下的答案,则:

f(x) = f_0(x) - \dfrac{f_0 ^ {-1} (x) - h(x)}{-f_0^{-2}(x)} f(x) = 2f_0(x) - f_0^2(x)\cdot h(x)

倍增即可,时间复杂度 T(n) = T(\dfrac{n}{2}) + \Theta(n \log n) = \Theta(n \log n)

分治 \text{FFT}

给定序列 g_{1 \cdots n - 1},求序列 f_{0 \cdots n - 1}

其中:

f_i = \sum_{j = 1}^i f_{i - j}\cdot g_{j}

并且 f_0 = 1

首先提一下生成函数的做法。

设:

F(x) = \sum_{i = 0}^{\infty} f_i\cdot x ^ i, G(x) = \sum_{i = 1}^{\infty} g_i \cdot x ^ i F(x) \cdot G(x) = F(x) - f_0 F(x) = \dfrac{f_0}{1 - G(x)} = {\left( 1 - G(x) \right)} ^ {-1}

然后多项式求逆,时间复杂度 \Theta(n \log n)

多项式 \ln

给定多项式 F(x),求多项式 G(x) = \ln F(x)

G(x) = \ln F(x)

对于两边分别求导:

G'(x) = \dfrac{F'(x)}{F(x)} G(x) = \int \dfrac{F'(x)}{F(x)}

然后多项式求逆,时间复杂度 \Theta(n \log n)

多项式 \exp

考虑多项式牛顿迭代,给定多项式 h(x),要求一个多项式 f(x),使得 g(f(x)) = \ln f(x) - h(x) = 0

f(x) = f_0(x) - \dfrac{\ln f_0(x) - h(x)}{{f_0(x)}^{-1}} f(x) = f_0(x)\cdot\left(1 - \ln f_0(x) + h(x)\right)

时间复杂度 T(n) = T(\dfrac{n}{2}) + \Theta(n \log n) = \Theta(n \log n)

多项式开根

多项式牛顿迭代

多项式多点求值

多项式快速插值

普通生成函数

指数生成函数

狄利克雷生成函数

\texttt{Thanks for watching!}