(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輸出樣例 分析ac**3 1 2 1 8 5 6
#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的子串行的字串長度最...