背包问题(恰好背满 二维背包) 总结

本文详细介绍了背包问题的几种类型,包括01背包、完全背包、混合背包、二维费用背包和分组背包。重点讨论了01背包恰好背满的情况,强调了初始化的重要性,并给出了二维费用背包的动态规划解法。此外,还通过错误分析解释了动态规划中自底向上和自上而下的思考方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

专题训练:点击打开链接  密码:JXFEACM

他人总结:点击打开链接  背包九讲:点击打开链接

其实核心记住:

背包是组合问题 填充性质 元素之间没关系

1. 01背包(右->左)

恰好装满(仅初始化[0])否则全为0,有负值(右移) 浮点数(调换w,v),次优(两个dp),K优([i-1][v][1...k] 放/不放都存起来然后归并) ,求w+v最大 (一样)

2. 完全背包 不限量,但依照V还是有限制(左->右)多重背包 都用标记数组方法,coins poj1742。

3. 混合背包 HDU 3535

 最多一个(每次比较都是上个阶段放入与当前阶段不放,初始化为上一阶段),最少一个(init设定-1,若当前阶段-1则放入,否则取最优),无所谓(01)

4. 二维费用背包 两个属性,多一层循环。eg: 01背包限制为仅取M个物品,用M外循环,表示N个物品填充使得M个最优。dp[m][j] = dp[m-1][j-v[i]]+w[i];

5. 分组背包 混合背包差不多 hdu  1712 n个组,每个组n个物品,进行选取 至多一个。 hdu 3033 至少一个


. “物品” 可以是规则 poj1170


关键字:

动态转移方程

自底向上

自上而下

备忘录

分解子问题


学习DP,背包问题似乎是永远绕不过去的。背包问题其实是多阶段状态填充。结合昨晚因为输出看错WA了一晚上的 POJ1384 (完全背包)来谈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值