動態規劃 線性dp 初級

2021-09-05 08:23:40 字數 698 閱讀 5360

攔截飛彈(洛谷p1020 飛彈攔截)

o(n*logn)的解法

dilworth定理

定理1 令(x,≤)是乙個有限偏序集,並令r是其最大鏈的大小。則x可以被劃分成r個但不能再少的反鏈。

其對偶定理稱為dilworth定理:

定理2 令(x,≤)是乙個有限偏序集,並令m是反鏈的最大的大小。則x可以被劃分成m個但不能再少的鏈。

一組數字

最少不公升序集的個數=最長公升長度

最少不降序集的個數=最長降長度

最少公升序集的個數=最長不公升長度

最少降序集的個數=最長不降長度

(第一問:最長不降序列)用f[x]表示長度為x的最大結束點(後面的數字一定可以用最大的來更新),當小於等於時可新增新的,否則,用二分查詢f[x]中最大小於它的數字更新(是結束點盡量大條件)。

(第二問:最長公升序列)用f[x]表示長度為x的最小結束點(後面的數字一定可以用最大的來更新),當大於時可新增新的,否則,用二分查詢f[x]中最小大於它的數字更新(是結束點盡量小的條件)。

注意:如果前乙個數字等於它,不更新,因為f[x-1]就是最小的數字,最小都不能更新,其餘的都不可以。

動態規劃 線性DP

線性dp 即線性動態規劃,不侷限於 線性時間複雜度 的一維動態規劃。與數學中的 線性空間 類似,如果乙個動態規劃演算法的 狀態 包含多個維度,但在每個維度上都具有 線性 變化的 階段 那麼該動態規劃演算法同樣稱為 線性dp 在這類問題中,需要計算的物件表現出明顯的維度以及有序性,每個狀態的求解直接構...

動態規劃 線性dp 筆記

線性dp的經典問題 lis lcs 數字三角形。最長上公升子串行 lis 問題描述 給定乙個長度為n的數列a,求數值單調遞增的子串行的長度最長是多少。a的任意子序列可表示為b 其中k1最長公共子串行 lcs 問題描述 給定兩個長度分別為n和m的自負床a和b,求既是a的子串行又是b的子串行的字串長度最...

動態規劃 線性 DP 序列問題

子串行 乙個序列 a a1,a2,an 中任意刪除若干項,剩餘的序列叫做 a 的乙個子串行。也可以認為是從序列 a 按原順序保留任意若干項得到的序列。例如 對序列 1,3,5,4,2,6,8,7 來說,序列 3,4,8,7 是它的乙個子串行。公共子串行 如果序列 c 既是序列 a 的子串行,也是序列...