[leetcode] 动态规划
背包
先啃懂 背包九讲
01背包,即物品有限。
for 物品
for 容量(倒序)
- P1048 [NOIP2005 普及组] 采药 [ 原题 | 题解 ]
- P1049 [NOIP2001 普及组] 装箱问题 [ 原题 | 题解 ]
- P1507 NASA的食物计划 [ 原题 | 题解 ]
- P1510 精卫填海 [ 原题 | 题解 ]
完全背包,即物品无限。
for 物品
for 容量(正序)
注意,爬楼梯(LeetCode 70) 要求序列有序,然而一般的完全背包不需要有序,如经典的凑硬币:面试题 08.11. 硬币。要注意这两种情况的区别!前者先循环容量再循环物品,后者先循环物品再循环容量。
-
P1832 A+B Problem(再升级)[ 原题 | 题解 ]
-
零钱兑换( LeetCode 322 )
-
零钱兑换 II( LeetCode 518 )
-
组合总和 Ⅳ(leetcode 377)
-
完全平方数( LeetCode 279 )
-
单词拆分(leetcode 139)
分组背包。物品被划分为若干组,每组中的物品互相冲突,最多选一件。
for 组号
for 容量
for 组内物品
- P1757 通天之分组背包 [ 原题 | 题解 ]
多重背包,第 i 种物品最多有 n[i] 件可用。是分组背包的一种特殊情况,这么理解:对于第 i 种物品,只能选择 0,1,2,3,4…n[i] 其中一种情况。
for 物品种类
for 容量
for 该类物品数量
如果超时,则需要二进制优化为 01 背包
- P2066 机器分配 [ 原题 | 题解 ]
- P1776 宝物筛选 [ 原题 | 题解 ]
混合背包
有的物品有无穷个(完全),有的物品是有限的(多重)。先处理完全背包,再把多重背包进行二进制优化转为 01 背包。
- P1833 樱花 [ 原题 | 题解 ]
满足某个条件的背包
- P1509 找啊找啊找GF [ 原题 | 题解 ]
二维 true false 背包
- P1877 [HAOI2012] 音量调节 [ 原题 | 题解 ]
投资股票,多次 dp
- P1853 投资的最大效益 [ 原题 | 题解 ]
动态规划
先记录最近遇到的状态dp。
- 打家劫舍( LeetCode 198 )[ 原题 题解 ]
- 打家劫舍(升级题目,选中 i 后,i-2,i-1,i+1,i+2 不能选,问能偷的最大价值)[原题 题解]
- 打家劫舍(升级题目,可以偷连续2个住户,但是不能偷连续3个住户,问能偷的最大价值)[原题 题解]
- 打家劫舍(升级题目,不能偷连续住户,但有 k 次可以偷连续住户的机会,问能偷的最大价值)[原题 题解]
- 打家劫舍III( LeetCode 337 )[原题 题解]
- 买卖股票的最佳时机III( LeetCode 123 )
- 买卖股票的最佳时机IV( LeetCode 188 )
- 最佳买卖股票时机含冷冻期(LeetCode 309)[ 原题 题解 ]