線性dp的經典問題:lis、lcs、數字三角形。
最長上公升子串行(lis)
問題描述:給定乙個長度為n的數列a,求數值單調遞增的子串行的長度最長是多少。a的任意子序列可表示為b = ,其中k1最長公共子串行(lcs)
問題描述:給定兩個長度分別為n和m的自負床a和b,求既是a的子串行又是b的子串行的字串長度最長是多少。
狀態表示:f[i, j]表示字首子串a[1 ~ i]與b[1 ~ j]的「最長公共子串行」的長度
階段劃分:
已經處理的字首長度(兩個字串中的位置,即乙個二維座標)
轉移方程:
f[i, j] = max
邊界:f[i, 0] = f[0, j] = 0
目標:f[n, m]
數字三角形
問題描述:給定乙個共有n行的三角矩陣a,其中第i行有i列不為零。從左上角出發,每次可以向下方或右下方走一步,最終到達底部。求把經過的所有位置上的數加起來,和最大是多少。
狀態表示:f[i, j]表示從左上角走到第i行第j列,和最大是多少
階段劃分:路徑的結尾位置(矩陣中的行、列位置,即乙個二維座標)
轉移方程:
f[i, j] = a[i, j] + max
邊界:f[1, 1] = a[1, 1]
目標:max 1<=j<=n
動態規劃 線性DP
線性dp 即線性動態規劃,不侷限於 線性時間複雜度 的一維動態規劃。與數學中的 線性空間 類似,如果乙個動態規劃演算法的 狀態 包含多個維度,但在每個維度上都具有 線性 變化的 階段 那麼該動態規劃演算法同樣稱為 線性dp 在這類問題中,需要計算的物件表現出明顯的維度以及有序性,每個狀態的求解直接構...
動態規劃 線性dp 初級
攔截飛彈 洛谷p1020 飛彈攔截 o n logn 的解法 dilworth定理 定理1 令 x,是乙個有限偏序集,並令r是其最大鏈的大小。則x可以被劃分成r個但不能再少的反鏈。其對偶定理稱為dilworth定理 定理2 令 x,是乙個有限偏序集,並令m是反鏈的最大的大小。則x可以被劃分成m個但不...
動態規劃 線性 DP 序列問題
子串行 乙個序列 a a1,a2,an 中任意刪除若干項,剩餘的序列叫做 a 的乙個子串行。也可以認為是從序列 a 按原順序保留任意若干項得到的序列。例如 對序列 1,3,5,4,2,6,8,7 來說,序列 3,4,8,7 是它的乙個子串行。公共子串行 如果序列 c 既是序列 a 的子串行,也是序列...