動態規劃線性Dp LCS LIS

2021-10-21 19:30:34 字數 1779 閱讀 5387

(longest common subsequence)

原題鏈結

給定兩個長度分別為n和m的字串a和b,求既是a的子串行又是b的子串行的字串長度最長是多少。

輸入格式

第一行包含兩個整數n和m。

第二行包含乙個長度為n的字串,表示字串a。

第三行包含乙個長度為m的字串,表示字串b。

字串均由小寫字母構成。

輸出格式

輸出乙個整數,表示最大長度。

資料範圍

1 ≤ n,m ≤ 1000

輸入樣例

4 5

acbd

abedc

輸出樣例

分析總結本題的狀態:

ac**:

#include

#include

using

namespace std;

const

int n =

1010

;int dp[n]

[n];

char a[n]

,b[n]

;int

main()

cout << dp[n]

[m]<< endl;

return0;

}

longest increasing subsequence

原題鏈結

給定乙個長度為n的數列,求數值嚴格單調遞增的子串行的長度最長是多少。

輸入格式

第一行包含整數n。

第二行包含n個整數,表示完整序列。

輸出格式

輸出乙個整數,表示最大長度。

資料範圍

1 ≤ n ≤ 1000,

−10 ^ 9 ≤ 數列中的數 ≤ 10 ^ 9

輸入樣例

7

3 1 2 1 8 5 6

輸出樣例

分析ac**

#include

#include

using

namespace std;

const

int n =

1010

;int a[n]

;//儲存資料

int dp[n]

;int

main()

int ans =0;

for(

int i =

1;i <= n;i++

) ans =

max(ans,dp[i]);

//尋找dp陣列中最大的值

cout << ans << endl;

return0;

}

動態規劃 線性DP

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

動態規劃 線性dp 初級

攔截飛彈 洛谷p1020 飛彈攔截 o n logn 的解法 dilworth定理 定理1 令 x,是乙個有限偏序集,並令r是其最大鏈的大小。則x可以被劃分成r個但不能再少的反鏈。其對偶定理稱為dilworth定理 定理2 令 x,是乙個有限偏序集,並令m是反鏈的最大的大小。則x可以被劃分成m個但不...

動態規劃 線性dp 筆記

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