接下来我说一下,我做过的一些背包的题目:主要来自背包九讲和lyd的算法竞赛进阶指南
首先我们可以通过背包九讲把题目分成一下几类。
我做一下分类: 1: 01背包
2: 完全背包(和01背包没有什么差别,写法上,就是完全背包是正着dp的)
3: 多重背包(主要是考虑它的两种优化,单调队列优化和二进制优化)
4: 混合3个背包(这种类型的题目,就是分三种情况讨论就可以,不用太过担心和考虑)
5: 二维费用背包 (其实和一维费用背包的区别和难度也没有太大的区别和变化,如果二维费用背包的话,也就加一维状态就可以,用线性dp中的一句话可以说,当当前状态如果完全表示这个状态区间时,可以多加一维状态来表示,同时它如果限制取的次数,也可以看作是二维背包的一个限制条件)
6: 分组的背包问题 (比如一个背包组里面只能取一个这样的限制问题)
7: 依赖性背包问题 (如一个物品选择或者不选依赖与它的主件的选择,这样其实就构成一个树形结构,也可以说是树形dp)
8: 背包问题的变化 (如输出方案,在如输出最优方案,再如输出字典序最小的方案,在于求第k优的方案等等)