背包模型总结

本文深入探讨了背包问题的各种类型,包括01背包、完全背包、多重背包、混合背包和分组背包,强调了每种类型的核心特点。此外,还介绍了二维费用背包问题,并提到了有依赖的背包问题。对于解决方案,不仅讲解了如何求解最优化答案,还阐述了如何找出具体的方案,包括利用状态转移记录选择过程。关键词涉及动态规划、背包问题、组合优化。
摘要由CSDN通过智能技术生成

组合类DP:答案与选择的顺序无关.

首先:所有背包的重点都在于花费(体积…等)和价值的定义,倘若花费有两种,则需要多开一维.
其次:
01背包:重点在于抽象出每个物品只选一次
完全背包:重点在于抽象出每个物品可以选无穷多次
多重背包:重点在于抽象出每个物品有有限个.
混合背包:重点在于抽象出物品可以有1个,可以有无穷多个或者有有限个这三种选择.
分组背包:重点在于抽象出每一组以及每一组里面的选择,也即是抽象出每一组物品之间互斥的多种选择(要明白分组背包问题里面的每一组的每一个选择之间都是互斥的)
二维费用的背包:重点在于抽象出花费和价值,当发现花费有二维甚至是多维的时候就可以考虑了(其实二维费用背包问题就是把数组里面原来表示花费的一维扩展到了两维)
有依赖的背包:待总结
背包问题求方案数:注意状态转移划分子集的时候其实不仅仅是可以维护答案数组的,一样可以维护答案的方案数.
背包问题求具体方案:在状态转移的时候明确当前状态是由哪个状态转移过来的(选择了哪个子集),这个过程可以用数组记录,一步步往前递推即可;也可以求出来最优解,再进行一遍背包问题,与每一步的决策进行比较,判断当前最优解是由哪个最优解(子集)转移过来的,一步步往前推即可.
背包问题求具体方案的小技巧:由于最后判断转移的时候需要从后往前推,因此可以从前往后进行背包问题的求解,再从后往前求具体方案(相当于之前的从前往后).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值