動的計画法
動的計画法は、同じ形の小さな問題の答えを組み合わせて全体の答えを作り、その答えを保存して同じ計算を繰り返さない手法です。難しいのは状態が何を表すかを決めることで、コード自体は短いことがよくあります。
20 章 465 問の、いちばん大きな問題集です。入門 DP とグリッド DP から始まり、ナップサック、LCS と LIS、分割 DP、状態機械 DP を経て、区間 DP、bit DP、桁 DP、木 DP、グラフ上の DP、ゲーム DP、確率 DP へと進みます。具体的な解の復元やジャンプゲームの変形といった特集もあります。再帰に慣れていて、DP を順序立てて最後まで練習したい人に向いています。
465 問レーティング 1262–312520 章
書斎を開く
誰かと一緒にこの問題集を進めたいなら、ログインして書斎を開いてみてください。ヒロインが一問ずつ出題してくれます。
一、入門 DP
§1.1 階段上り
| 問題 | レーティング |
|---|---|
| 70. Climbing Stairs | 未評価 |
| 746. Min Cost Climbing Stairs | 1500 |
| 3693. Climbing Stairs II | 1560 |
| 377. Combination Sum IV | 1600 |
| 2466. Count Ways to Build Good Strings | 1694 |
| 2266. Count Number of Texts | 1857 |
§1.2 House Robber(隣接しない選択)
§1.3 Maximum Subarray Sum
二、Grid DP
§2.1 基礎
§2.2 発展
三、Knapsack
§3.1 0-1 Knapsack
§3.2 Unbounded Knapsack
| 問題 | レーティング |
|---|---|
| 322. Coin Change | 未評価 |
| 518. Coin Change II | 未評価 |
| 279. Perfect Squares | 未評価 |
| 3592. Inverse Coin Change | 1701 |
| 1449. Form Largest Integer with Digits That Add Up to Target | 1927 |
§3.3 Bounded Knapsack(任意)任意
| 問題 | レーティング |
|---|---|
| 2585. Number of Ways to Earn Points | 1910 |
| 3333. Find the Original Typed String II | 2629 |
| 2902. Count of Sub Multisets with Bounded Sum | 2759 |
| 3489. Zero Array Transformation IV | 未評価 |
§3.4 Grouped Knapsack
| 問題 | レーティング |
|---|---|
| 1155. Number of Dice Rolls with Target Sum | 1654 |
| 1981. Minimize the Difference Between Target AND Chosen Elements | 2010 |
| 2218. Maximum Value of K Coins From Piles | 2158 |
§3.5 Tree Knapsack(任意)任意
| 問題 | レーティング |
|---|---|
| 3562. Maximum Profit From Trading Stocks with Discounts | 2458 |
四、典型的なLinear DP
§4.1 Longest Common Subsequence (LCS)
§4.2 Longest Increasing Subsequence (LIS)
五、Partition DP
§5.1 分割できるかの判定
| 問題 | レーティング |
|---|---|
| 2369. Check If There Is a Valid Partition for the Array | 1780 |
| 139. Word Break | 未評価 |
§5.2 最適な分割
§5.3 分割数に制約のある分割
六、State Machine DP
§6.1 株の売買
§6.2 基礎
§6.3 発展
七、その他のLinear DP
§7.1 一次元 DP
§7.2 交わらない区間
§7.3 subarray DP
§7.4 条件を満たすsubsequenceの DP
§7.5 部分長方形 DP
§7.6 多次元 DP
八、Interval DP
§8.1 最長回文subsequence
§8.2 Interval DP
九、Bitmask DP
§9.1 順列型 Bitmask DP ① 隣接に依存しない
| 問題 | レーティング |
|---|---|
| 526. Beautiful Arrangement | 未評価 |
| 1799. Maximize Score After N Operations | 未評価 |
| 3533. Concatenated Divisibility | 2257 |
| 3530. Maximum Profit From Valid Topological Order in Dag | 2353 |
§9.2 順列型 Bitmask DP ② 隣接に依存する
§9.3 巡回セールスマン問題(TSP)
| 問題 | レーティング |
|---|---|
| 943. Find the Shortest Superstring | 2186 |
§9.4 部分集合 Bitmask DP
§9.5 輪郭線 DP(Broken Profile)
| 問題 | レーティング |
|---|---|
| 1411. Number of Ways to Paint N 3 Grid | 1845 |
| 1931. Painting a Grid with Three Different Colors | 2170 |
| 1659. Maximize Grid Happiness | 2655 |
| 980. Unique Paths III | 未評価 |
§9.6 SOS DP(高速ゼータ変換)
§9.7 その他の Bitmask DP
十、Digit DP
§10.1 条件を満たす要素の個数を数える
§10.2 条件を満たす要素の値の総和を求める
| 問題 | レーティング |
|---|---|
| 233. Number of Digit One | 未評価 |
| 3753. Total Waviness of Numbers in Range II | 2297 |
§10.3 その他のDigit DP
| 問題 | レーティング |
|---|---|
| 3677. Count Binary Palindromic Numbers | 2223 |
| 3348. Smallest Divisible Digit Product II | 3101 |
十一、DP の高速化
§11.1 Prefix Sumによる DP の高速化
§11.2 Monotonic Stackによる DP の高速化
| 問題 | レーティング |
|---|---|
| 1335. Minimum Difficulty of a Job Schedule | 2035 |
| 2866. Beautiful Towers II | 2072 |
| 2617. Minimum Number of Visited Cells in a Grid | 2582 |
§11.3 Monotonic Queueによる DP の高速化
§11.4 BIT / Segment Treeによる DP の高速化
§11.5 Trieによる DP の高速化
| 問題 | レーティング |
|---|---|
| 139. Word Break | 未評価 |
| 2707. Extra Characters in a String | 未評価 |
| 472. Concatenated Words | 2300 |
§11.6 行列累乗による DP の高速化
§11.7 Convex Hull Trick(傾き最適化)
| 問題 | レーティング |
|---|---|
| 3494. Find the Minimum Amount of Time to Brew Potions | 未評価 |
| 3500. Minimum Cost to Divide Array Into Subarrays | 未評価 |
| 3693. Climbing Stairs II | 未評価 |
§11.8 Alien DP(WQS 二分)
| 問題 | レーティング |
|---|---|
| 188. Best Time to Buy AND Sell Stock IV | 未評価 |
| 3573. Best Time to Buy AND Sell Stock V | 未評価 |
| 2209. Minimum White Tiles After Covering with Carpets | 未評価 |
| 3743. Maximize Cyclic Partition Score | 未評価 |
§11.9 その他の DP 高速化
十二、Tree DP
§12.1 木の直径
§12.2 木の最大独立集合
| 問題 | レーティング |
|---|---|
| 337. House Robber III | 未評価 |
| 2646. Minimize the Total Price of the Trips | 2238 |
| 3544. Subtree Inversion Sum | 2545 |
§12.3 木の最小支配集合
| 問題 | レーティング |
|---|---|
| 968. Binary Tree Cameras | 2124 |
§12.4 Rerooting Tree DP
§12.5 その他のTree DP
十三、グラフ上の DP
十三、グラフ上の DP
| 問題 | レーティング |
|---|---|
| 3543. Maximum Weighted K Edge Path | 2110 |
| 913. Cat AND Mouse | 2800 |
| 1728. Cat AND Mouse II | 2849 |
十四、Game Theory DP
十四、Game Theory DP
十五、確率・期待値DP
特集:具体的な解の復元(解の出力)
特集:具体的な解の復元(解の出力)
特集:前後からの分解
特集:前後からの分解
特集:X を Y に変える
特集:ジャンプゲーム
特集:ジャンプゲーム
その他
トラック 2 の 3 番目です。個数制限付きナップサックと木上のナップサックの 2 セクションは任意として発展編に回されるので、ルートは主要な章をそのまま進みます。
レーティングは zerotrac さんによる LeetCode コンテストレーティングです。zerotrac のレーティングがない問題は「未評価」と表示されます。
書斎を開く