用多项式的逆优化dp总结

用多项式的逆优化dp总结

考虑一个经典的模型:

d p i = ∑ j = 1 i d p i − j × f j dp_i=\sum_{j=1}^i dp_{i-j}\times f_j dpi=j=1idpij×fj

d p n dp_n dpn 这种问题表面看上去需要 n 2 n^2 n2,但是事实上可以更优。

我们建立一个长度无穷大的多项式: F ( x ) = ∑ i = 0 ∞ f i × x i F(x)=\sum _{i=0}^\infty f_{i}\times x^i F(x)=i=0fi×xi,特殊的: f 0 = f k + n = 0 , k ∈ N ∗ f_{0}=f_{k+n}=0,k\in \mathbb{N}^* f0=fk+n=0,kN

然后可以发现 d p n = ∑ i = 0 ∞ [ x n ] ( F i ( x ) ) dp_n=\sum _{i=0}^{\infty}[x^n](F^i(x)) dpn=i=0[xn](Fi(x))

由于 ∑ i = 0 ∞ x i = 1 1 − x \sum _{i=0}^{\infty} x^i=\frac{1}{1-x} i=0xi=1x1

所以: d p n = [ x n ] 1 1 − F ( x ) dp_{n}=[x^n]\frac{1}{1-F(x)} dpn=[xn]1F(x)1

然后 d p n dp_n dpn就是多项式 G ( x ) = 1 − F ( x ) G(x)=1-F(x) G(x)=1F(x)的逆的第n项系数。时间复杂度为 O ( n log ⁡ n ) O(n\log n) O(nlogn)

如何求多项式的逆元?

题解 P4238 【模板】多项式求逆- Great_Influence 的博客 - 洛谷博客 (luogu.com.cn)

你可能感兴趣的:(算法,题解)