DP 練習
概念複習
形式
TOP DOWN: 紀錄遞迴時的狀態 減少複雜度
BOTTOM UP: 用 DP 陣列與 for 迴圈紀錄狀態
概念
TOP DOWN:
int f(int x){
if(x <= 1) return 1;
else return f(x-1)+f(x-2);
}
O(\phi^n)
紀錄狀態:
int dp[N];
int f(int x){
if(dp[x]) return dp[x];
if(x <= 1) return dp[x] = 1;
else return dp[x] = f(x-1)+f(x-2);
}
O(n)
幾個特點
1. 重複子問題
2.最佳子結構
經典題匯集
部分經典題型
(其中A~C是基本的轉移,DE 是 0/1 背包,F 是 LCS)
Longest Increasing Subsequence
(二分搜做法、離散化 + 資結、2021 初選 pC)
(分數背包、照 CP 值排序)
部分經典題型
(\(O(n^3)\) 區間 DP)
\(dp[l][r]\) 表示把 \(a_l,a_{l+1},...,a_r\) 合併的最小價值
(玩遊戲問題、進階版題目點此)
(位元 DP dp[i][mask])
部分經典題型
部分經典題型
部分經典題型
DP
By sam571128
DP
- 117