背包问题总结
作者:
Fiee_9
,
2022-02-24 10:36:37
,
所有人可见
,
阅读 266
背包问题
1. 01背包
有n个物品体积为v,价值为w,每件物品只有一个,问最大价值
2.完全背包
有n个物品体积为v,价值为w,每件物品可以使用无限次,公式递推f[i][j-v]与f[i][j]的关系来求最大价值
3.分组背包
有n组物品,每组物品有m[i]件,每组物品只能选择一个,三重循环,但某些题也会通过贪心依据分组类型来进行dp,这个需要充分考虑题目中所给的数据范围,例如通过对体积进行划分来解决分组背包问题
4.多重背包
有n件物品,每件物品为有限个,y总讲的一共有三种方法,根据时间复杂度可以自行选择。
一.将多重背包问题简化为01背包问题。
二.将每件物品以二进制数的形式进行打包再转化为01背包
三.通过贪心结合单调队列来进行解决
/*
多重背包问题
体积最多为v 初始化为0
体积恰好为v 初始化为 0
体积至少是v f[0]初始化为0,其余点初始化为不合法值INF或者-INF
*/
5.混合背包
混合背包问题即将三种背包混合起来进行计算,即将前面的方法结合起来即可解决
6.二维费用背包
俩个相关变量,进行状态转移
7.有依赖的背包问题
物品之间具有相关性,类似于父子节点,结合分组背包问题来进行解决。
8.背包问题求方案数以及具体方案