分类
- 01背包问题:每种物品至多使用一次
- 完全背包问题:每种物品有无限个
- 多重背包问题:第i件物品有si个
- 分组背包问题:有若干个组,每个组至多只能取一件物品
分析
几个概念
- 状态表示:需要几维来表示状态,每个状态的含义是什么。
- 状态计算:如何把每个状态算出来。即集合划分,如何把当前的集合划分成更小的子集,使每个子集都可以算出来。(集合划分的原则:不重、不漏)
- 集合:状态表示的集合包含哪些元素,其中的元素需要满足什么条件
- 属性:一般有Max(最大价值)、Min(最小代价)、数量(元素数量)
- DP优化:一般是对DP问题的代码或者动态规划的方程做等价变形。(先写出朴素版的,然后再进行优化)