多项式全家桶
参考 https://www.luogu.com.cn/blog/command-block/ntt-yu-duo-xiang-shi-quan-jia-tong
多项式乘法逆
求满足 \(f(x)f_{*}(x)\equiv 1 \pmod{x^n}\)
倍增,若有 \(g(x)f(x)\equiv 1\pmod{x^{\left\lceil{\frac{n}{2}}\right\rceil}}\)
则 \(f_{*}(x) \equiv g(x) \pmod{x^{\left\lceil{\frac{n}{2}}\right\rceil}}\)
移项,\(f_{*}(x) - g(x)\equiv 0 \pmod{x^{\left\lceil{\frac{n}{2}}\right\rceil}}\)
平方,\(f_{*}(x)^2 - 2f_{*}(x)g(x)+g(x)^2\equiv 0 \pmod{x^{\left\lceil{\frac{n}{2}}\right\rceil}}\)
乘上 \(f(x)\),\(f_{*}(x) - 2g(x)+f(x)g(x)^2\equiv 0 \pmod{x^{\left\lceil{\frac{n}{2}}\right\rceil}}\)
移项得到 \(f_{*}(x) \equiv 2g(x) - f(x)g(x)^2 \pmod{x^{\left\lceil{\frac{n}{2}}\right\rceil}}\)
时间复杂度 \(T(n) = T(n/2) + \mathrm{O(n\log n)} = \mathrm{O(n\log n)}\)。
多项式牛顿迭代
已知函数 \(G\) 且 \(G(F(x)) = 0\),求 \(F(x)\)。
柿子:\(F(x) \equiv F_{*}(x) - \dfrac{G(F_{*}(x))}{G'(F_{*}(x))} \pmod{x^n}\)
多项式 ln
记 \(f(x) = \ln x\),则 \(B(x) = f(A(x))\)
两边求导,\(B'(x) = f'(A(x))A'(x) = \dfrac{A'(x)}{A(x)}\)
最后积分回去即可得到 \(B(x)\)。
多项式 exp
牛顿迭代,记 \(G(B(x)) = \ln B(x) - A(x)\)
则 \(G'(B(x)) = B(x)^{-1}\)
\(B(x) = B_{*}(x) - \dfrac{G(B_{*}(x))}{G'(B_{*}(x))}\)
\(B(x) = B_{*}(x) - (\ln B_{*}(x) - A(x))B_{*}(x)\)
\(B(x) = (1 - \ln B_{*}(x) + A(x))B_{*}(x)\)
多项式快速幂
\(B(x) = A^k(x) = (e^{\ln A(x)})^k = e^{k\ln A(x)}\)
直接 \(\ln \exp\) 就可以做到 \(\mathrm{O(n\log n)}\),当然也可以暴力 \(\mathrm{O(n\log n\log{k})}\)。
一些经典套路:
记 \(T\) 的长度为 \(m\),设 \(h_i = \sum\limits_{j=0}^{m}(S_{i+j} - T_j)^2\),若 \(i\) 为起始点的子串可以匹配 \(T\),那么满足 \(h_i = 0\)。
由于 \(T\) 有万能符 \(?\),可以将 \(T_j\) 赋值为 \(0\),并将 \(h\) 改为 \(h_i = \sum\limits_{j=0}^{m}(S_{i+j} - T_j)^2S_{i+j}T_j\)。
但是这并不满足卷积形式,套路地翻转字符串 \(T\),将 \(h\) 改为:
拆开:
分成三部分卷起来即可得到 \(h\)。
若 \(h_i = 0\),则 \(i - m\) 为一个可行的起始点。

浙公网安备 33010602011771号