用多項式的逆優化dp總結

Gary_2005發表於2020-12-31

用多項式的逆優化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)

相關文章