DOKICODE
書房

動態規劃

動態規劃把問題拆成更小的同類問題,先求出小問題的答案再組合起來,並把答案存下來避免重算。最難的是決定「狀態」代表什麼,程式碼本身往往不長。

這是份量最大的題單,20 章共 465 題。從入門 DP 和網格 DP 開始,接著是背包、LCS 與 LIS、劃分型與狀態機 DP,再往後是區間、狀態壓縮、數位、樹形、圖上、博弈與機率 DP,另外還有輸出具體方案、跳躍遊戲變形等專題。適合已經能自在寫遞迴、想照順序把 DP 從頭練一遍的人。

465 題難度分 1262–312520 章節
進入書房

想要有人陪你寫完這份題單嗎?登入後進入書房,女主角會一次拿一道題目給你。

一、入門 DP

二、Grid DP

三、Knapsack DP

§3.5 Tree Knapsack(選做)選做

題目難度分
3562. 折扣價交易股票的最大利潤2458

四、經典Linear DP

五、Partition DP

§5.1 判定能否劃分

題目難度分
2369. 檢查數組是否存在有效劃分1780
139. 單詞拆分未評分

六、State Machine DP

七、其他Linear DP

§7.6 多維 DP

題目難度分
2222. 選擇建築的方案數1657
2826. 將三個組排序1721
2400. 恰好移動 k 步到達某一位置的方法數目1751
1262. 可被三整除的最大和1762
3332. 旅客可以得到的最多點數1828
3176. 求出最長好子序列 I1849
1269. 停在原地的方案數1854
3250. 單調數組對的數目 I1898
3218. 切蛋糕的最小總開銷 I未評分
3122. 使矩陣滿足條件的最少操作次數1905
576. 出界的路徑數未評分
403. 青蛙過河未評分
3725. 統計每一行選擇互質整數的方案數1982
1223. 擲骰子模擬2008
1320. 二指輸入的的最小距離2028
3366. 最小數組和2040
1575. 統計所有可行路徑2055
3154. 到達第 K 級臺階的方案數2071
2318. 不同骰子序列的數目2090
3469. 移除所有數組元素的最小代價2112
2746. 字符串連接刪減字母2126
1444. 切披薩的方案數2127
3320. 統計能獲勝的出招序列數2153
3429. 粉刷房子 IV2166
2896. 執行操作使兩個字符串相等2172
1420. 生成數組2176
3193. 統計逆序對的數目2266
1079. 活字印刷未評分
1866. 恰有 K 根木棍可以看到的排列數目2333
2312. 賣木頭塊2363
3177. 求出最長好子序列 II2365
1884. 雞蛋掉落-兩枚雞蛋未評分
887. 雞蛋掉落2377
920. 播放列表的數量2400
3336. 最大公約數相等的子序列數量2403
1388. 3n 塊披薩2410
903. DI 序列的有效排列2433
1900. 最佳運動員的比拼回合2455
1531. 壓縮字符串 II2576
1883. 準時抵達會議現場的最小跳過休息次數2588
964. 表示數字的最少運算符2594
3343. 統計平衡排列的數目2615
1787. 使所有區間的異或結果為零2640
3509. 最大化交錯和為 K 的子序列乘積2703
3441. 變成好標題的最少代價2765
3539. 魔法序列的數組乘積之和2694
2060. 同源字符串檢測2804
2809. 使數組和小於等於 x 的最少時間2979
3003. 執行操作後的最大分割數量3039
3225. 網格圖操作後的最大分數3028

八、Interval DP

九、Bitmask DP

§9.3 旅行商問題(TSP)

題目難度分
943. 最短超級串2186

十、Digit DP

§10.2 統計合法元素的價值總和

題目難度分
233. 數字 1 的個數未評分
3753. 範圍內總波動值 II2297

十一、優化 DP

§11.5 Trie優化 DP

題目難度分
139. 單詞拆分未評分
2707. 字符串中的額外字符未評分
472. 連接詞2300

十二、Tree DP

§12.2 樹上最大獨立集

題目難度分
337. 打家劫舍 III未評分
2646. 最小化旅行的價格總和2238
3544. 子樹反轉和2545

§12.3 樹上最小支配集

題目難度分
968. 監控二叉樹2124

十三、Graph DP

十四、博弈 DP

十五、機率/期望 DP

專題:輸出具體方案(打印方案)

專題:前後綴分解

專題:前後綴分解

題目難度分
724. 尋找數組的中心下標未評分
1991. 找到數組的中間位置未評分
3707. 相等子字符串分數1262
2270. 分割數組的方案數1334
2256. 最小平均差1395
1422. 分割字符串的最大得分未評分
238. 除自身以外數組的乘積未評分
1493. 刪掉一個元素以後全為 1 的最長子數組1423
845. 數組中的最長山脈1437
2012. 數組美麗值求和1468
2909. 元素和最小的山形三元組 II1479
2483. 商店的最少代價1495
1525. 字符串的好分割數目1500
3583. 統計特殊三元組1510
3354. 使數組元素等於零未評分
1930. 長度為 3 的不同迴文子序列1533
2874. 有序三元組中的最大值 II1583
1664. 生成平衡數組的方案數1590
123. 買賣股票的最佳時機 III未評分
3698. 分割數組得到最小絕對差1649
3598. 相鄰字符串之間的最長公共前綴1655
2222. 選擇建築的方案數1657
1031. 兩個無重疊子數組的最大和1680
689. 三個無重疊子數組的最大和未評分
2420. 找到所有好下標1695
2100. 適合野炊的日子1702
926. 將字符串翻轉到單調遞增未評分
334. 遞增的三元子序列未評分
1653. 使字符串平衡的最少刪除次數1794
1186. 刪除一次得到子數組最大和1799
3738. 替換至多一個元素後最長非遞減子數組1811
42. 接雨水未評分
2711. 對角線上不同值的數量差未評分
1477. 找兩個和為目標值且不重疊的子數組1851
1671. 得到山形數組的最少刪除次數1913
2906. 構造乘積矩陣2075
3334. 數組的最大因子得分未評分
2167. 移除所有載有違禁貨物車廂所需的最少時間2219
2484. 統計迴文子序列數目2223
2163. 刪除元素後和的最小差值2225
2565. 最少得分子序列2432
1995. 統計特殊四元組未評分
2552. 統計上升四元組2433
3302. 字典序最小的合法序列2474
3404. 統計特殊子序列的數目2445
3303. 第一個幾乎相等子字符串的下標2509
3410. 刪除所有值為某個元素後的最大子數組和2844
3003. 執行操作後的最大分割數量3039

專題:把 X 變成 Y

專題:跳躍遊戲

其他

這是階段二的第三份題單;多重背包與樹上背包兩個小節標為選做,留在進階題單裡,路線會繼續沿著核心章節前進。

難度分數來自 zerotrac 的 LeetCode 競賽評分。部分題目沒有 zerotrac 分數,會標示為「未評分」。

進入書房