[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)[ 原题 题解 ]

猜你喜欢

转载自blog.csdn.net/weixin_43742643/article/details/129786388