【问题描述】
不同于普通的没有“恰好装满”约束的背包问题,有时我们会遇到“恰好装满求最值”的背包问题。怎么求解?
其实,也很简单,只需要对普通的没有“恰好装满”约束的背包问题的初始状态进行微调便可。可见,两者在解法上差别不大。

【解决方法】
设 n 为物品种数,V 为背包容量,c[i] 表示容量为 i 的背包能够装的最大价值,vol[i] 为第 i 中物品的容积,val[i] 为第 i 种物品的价值。

现在分情况给出结论:
● 不用恰好装满背包问题的初始化:c[i]=0,其中 0<=i<=V
● 恰好装满求最大值背包问题的初始化:c[0]=0,c[i]=-inf,其中 1<=i<=V
● 恰好装满求最小值背包问题的初始化:c[0]=0,c[i]=inf,其中 1<=i<=V

恰好装满求最小值背包问题的初始化实例可参考 HDU 1114 - Piggy-Bank 的解法:
https://blog.csdn.net/hnjzsyjyj/article/details/126153528

【知识解析】
初始化的 c[] 数组,事实上就是没有任何物品放入背包时的合法状态。
● 如果背包不用恰好装满,那么任何容量的背包都有一个合法状态“什么也不装” ,此时背包的价值为0。故此类问题初始化为“c[i]=0,其中 0<=i<=V”。

● 如果背包恰好装满求最大值,那么此时只有一个合法状态,即容量为0的背包可以在什么也不装的状态下被 “恰好装满” ,此时背包的价值为0。其他容量的背包在“恰好装满求最大值”的约束下均没有合法的解,属于未定义的状态。且由于要求的是最大值,所以都应该被赋值为 −inf 。故此类问题初始化为“c[0]=0,c[i]=-inf,其中 1<=i<=V”。经过计算,若最终c[V]=-inf,则背包不能恰好装满。

● 如果背包恰好装满求最小值,那么此时只有一个合法状态,即容量为0的背包可以在什么也不装的状态下被 “恰好装满” ,此时背包的价值为0。其他容量的背包在“恰好装满求最小值”的约束下均没有合法的解,属于未定义的状态。且由于要求的是最小值,所以都应该被赋值为 inf 。故此类问题初始化为“c[0]=0,c[i]=inf,其中 1<=i<=V”。经过计算,若最终c[V]=inf,则背包不能恰好装满。

【参考文献】
https://blog.csdn.net/Iseno_V/article/details/100697105
https://blog.csdn.net/m0_52043808/article/details/122815072

“恰好装满求最值”背包问题的初始化解析相关推荐

  1. 变种 背包问题_01背包及其变种(物品无限背包、恰好装满背包)

    一.01背包问题 01背包是在M件物品取出若干件放在空间为W的背包里,每件物品的体积为C1,C2,-,Cn,与之相对应的价值为W1,W2,-,Wn.求解将那些物品装入背包可使总价值最大. 动态规划: ...

  2. 01背包及其变种(物品无限背包、恰好装满背包)

    一.01背包问题 01背包是在M件物品取出若干件放在空间为W的背包里,每件物品的体积为C1,C2,-,Cn,与之相对应的价值为W1,W2,-,Wn.求解将那些物品装入背包可使总价值最大. 动态规划: ...

  3. 【动态规划】完全背包:存钱罐(恰好装满)

    背包恰好装满问题: 设有n个物品,其重量(或占用空间)分别为w1, W.,...Wn.价值分别为V1,2....n. ← 给定一个总容量为W的背包,每个物品只能整个放入背包或不放.← 问:如何选择放入 ...

  4. Python3使用动态规划处理背包问题:完全背包(含背包恰好装满的情况)

    文章目录 题目介绍 题解1 题解2 题解3 完全背包问题是基于01背包的,如果对01背包问题不熟悉,可以参考: Python3使用动态规划处理01背包问题 题目介绍 原题链接:NC309 完全背包 描 ...

  5. 【动态规划笔记】动态规划初始化细节问题:恰好装满背包

    求最优解的背包问题中,有的题目要求[恰好装满背包],有的题目并[没有要求]必须把背包装满 实现方法: 初始化有所不同 设:F[i]表示容量为i的背包能够装的最大价值 恰好装满背包: 初始化:    F ...

  6. 01背包问题、完全背包、多重背包、恰好装满

    01背包问题:最基本的背包问题,每个物品最多只能放一次. 完全背包问题:每种物品可以放无限多次. 多重背包问题:每种物品有一个固定的次数上限. [代码] import java.util.Scanne ...

  7. http://www.dewen.net.cn/q/15749/PHP求数组值相加(可重复)等于某值的所有组合

    http://www.dewen.net.cn/q/15749/PHP求数组值相加(可重复)等于某值的所有组合 tieGump 1 票 tieGump 8 例如 $data = array(1,2,4 ...

  8. 01背包的变形问题----背包恰好装满

    01背包的变形问题----背包恰好装满 在看本文之前建议先看一下我之前发过的01背包详解. https://blog.csdn.net/Iseno_V/article/details/10000113 ...

  9. 恰好装满背包、恰好取k倍(取余)

    恰好装满背包(取余) 题目情形总结 判断整除 糖果 波动数列 题目情形总结 物品容量恰好等于m (恰好装满背包) 和 取得的糖果数恰好为k的倍数 若要求此时的最大价值,dp数组初始化为负无穷 详细解释 ...

最新文章

  1. 送餐机器人---取餐完成的确认方式
  2. Docker / 深入理解的容器和镜像
  3. mysql键太长_数据库,主键为何不宜太长长长长长长长长?(转)
  4. 【python】性能分析工具汇总
  5. commons-fileupload 的详细介绍与使用
  6. python内置数据结构_Python内置数据结构(一)
  7. Git学习笔记(2)——版本的回退,和暂存区的理解
  8. 计算机常见的硬件故障及维护,计算机硬件故障原理及日常维护
  9. MS17-010(永恒之蓝) 漏洞检测及利用教程
  10. 图像处理—灰度图像转为伪彩色图像
  11. 安装vue-cli创建项目的时候 gyp ERR! build error的npm包遇到以下错误
  12. python中response是什么意思_对python中各个response的使用说明
  13. 蓝桥杯基础练习合集一(C语言) 1.A+B问题2.数列排序3.十六进制转八进制4.十六进制转十进制5.十进制转十六进制
  14. python colorbar字体大小_如何更改colorbar上基数和指数的字体大小?
  15. 如何使用Categories
  16. “数据结构基础”系列网络课程主页
  17. 企业如何建立完善的管理体系
  18. 从微信头像链接下载图片到服务器
  19. openSUSE15.2收发@aliyun.com电子邮件之thunderbird篇
  20. 基于STM32的GPS模块驱动(AIR530)

热门文章

  1. 点通教育计算机,【实操一点通
  2. 微信公众号开发之扫码支付
  3. uni-app 配置代理
  4. mysql中如何将存在分隔符号的一列进行拆分,成为多行
  5. macOS 11 Big Sur 可在设置中禁用桌面着色以使深色模式效果更佳
  6. 图文详解两种算法:深度优先遍历(DFS)和广度优先遍历(BFS)
  7. 微信生成带参二维码,加彩色logo
  8. 荣耀v30pro各红米K30Pro的区别 哪个好
  9. 3dmax模型云代建E网模型云代下3D溜溜服务充值3d66网代下设计下载
  10. Java发送HTTP 请求