当前位置: 首页 > news >正文

背包学习笔记

01背包

01背包作为背包问题的鼻祖,也是所有背包问题的基础,其一般形式如下。

给你 \(n\) 个物品和一个容量为 \(m\) 的背包,每件物品有他的价值 \(v_i\) 与他的质量 \(w_i\)

乍一看,这类题似乎可以使用贪心进行解答,但很容易给出一个反例:

3 10
5 8
5 8
6 10

注:该样例每个物品的 \(w_i\) 在前 \(v_i\) 在后。

从贪心的角度上来讲,应该从大到小依次取 \(\frac{v_i}{w_i}\) 值最大的数,也就是仅仅取第三个物品,但很显然,我们应该取第一个和第二个物品来获得最大的价值16。

这时候我们便可以引出01背包了,我们很容易可以发现,每一个物品的状态只有两种情况,选1与不选0,那么假定 \(dp_{i,j}\) 表示前 \(i\) 个数中花费 \(j\) 的背包容量时所能达到的最大的价值和,便可以轻松的想出两个状态的贡献。

若不选(0),则 \(dp_{i,j} = dp_{i - 1,j}\)

若选择(1),则 \(dp_{i,j} = dp_{i - 1,j - w_i} + v_i\)

那么我们在推出这连个式子之后便可以轻松的得出转移方程,也就是 \(dp_{i,j} = \max(dp_{i - 1,j},dp_{i - 1,j - v_i} + w_i)\)

优化

我们可以发现实际上每一次计算时仅仅与 \(dp_{i}\)\(dp_{i - 1}\) 有关,所以我们可以考虑使用滚动数组进行优化来优化掉一位是的空间复杂度达到 \(O(m)\) 而此时一个细节便是枚举 \(j\) 时要倒序枚举,原因如下。

我们假设当前正序枚举到了 \(k\) ,那么 \(1 - k\) 之间便是更新后 \(i\) 的值,\(k + 1\)\(n\) 之间的值为更新前的 \(i - 1\) 。由于我们需要从 \(i - 1\) 转移到 \(i\) ,所以正序枚举是WA掉的,按照上述的方法在推一遍倒序枚举,我们就会发现倒序枚举完美符合我们的需求。所以第 \(i\) 个数选与不选对答案的贡献就出来了:

不选(0):\(dp_j = dp_j\)

选(1):\(dp_j = dp_{j - v_i} + w_i\)

所以转移方程就是 \(dp_j = \max(dp_j,dp_{j - v_i} + w_i)\)

代码就不给了,相信大家看到了转移方程以后就都会了。

多重背包

多重背包的题型和01背包一样,给你 \(n\) 个物品和一个容量为 \(m\) 的背包,每个物品有他的重量 \(v_i\) 价值 \(w_i\) ,数量 \(s_i\) 。显然,多重背包和01背包的最大区别就是每个物品可以选 \(s_i\) 次。我们考虑把这个问题转化为01背包,我们可以把第 \(i\) 个物品选 \(k\) 次所达成的贡献看作一个全新的物品,那么一个可以取 \(s\) 次的物品就可以转化为 \(s\) 个单独的物品,所以我们可以使用三重循环,第一层第二层枚举与01背包相同,第三层枚举选举物品的数量,我们可以很轻松的得到转移方程:

\(dp_{i,j} = \max(dp_{i - 1,j},dp_{i - 1,j - v_i * k} + w_i * k)\)

http://www.jsqmd.com/news/650383/

相关文章:

  • 那个19岁敢独自横穿中国的牛津女生,扯下了多少中国式家庭教育的遮羞布?
  • Hunyuan-MT-7B镜像免配置:Pixel Language Portal支持OCI标准容器镜像签名与验证
  • 免费开源镜像烧录工具Balena Etcher终极指南:轻松制作系统启动盘
  • 靠谱的实习律师实务培训推荐,线下培训提升能力,从学员评价看优劣 - mypinpai
  • 千问3.5-27B效果实测:对含水印/旋转/裁剪图片的内容理解鲁棒性评估
  • Nuke Survival Toolkit:150+免费专业插件终极指南,全面提升特效制作效率
  • XUnity.AutoTranslator终极指南:5步解决Unity游戏语言障碍的完整实战方案
  • 解锁小米路由器青春版:从SSH漏洞到Breed引导的第三方固件刷入实战
  • 降本增效的秘密武器——融智天业财一体化平台 - 业财科技
  • 全开麦不修音舞台翻车的浪姐,我反而看得更起劲了
  • 2026年口碑好的百福路灯选购指南,讲讲百福路灯智能化程度、配件质量与专家评价 - 工业品牌热点
  • 什么牌子的电饭煲比较耐用?实测20+款饭煲,这份无差评榜单请收好 - 速递信息
  • 7个理由告诉你为什么需要这款终极foobar2000歌词插件
  • 【2026倒计时预警】:SITS圆桌披露3家头部实验室已暂停纯语言AGI路线,转向多模态协同训练
  • STM32L4低功耗实战:HAL库电源管理函数全解析(含代码示例)
  • 双膜储气柜:柔性储气技术引领绿色能源存储
  • 没发生什么大事,但我却越来越不安
  • 探讨有实力的短视频代运营服务公司,哪家口碑好值得选择 - myqiye
  • 海口办公室装修抄作业|这3家本地靠谱的办公椅厂商,定做服务也太香了 - 品牌推荐大师1
  • 比亚迪在巴西的新广告主角是百万富翁
  • 解读比较好的免疫细胞存储企业,靠谱吗深度分析 - 工业品网
  • LinkSwift:八大网盘直链解析引擎的技术架构与实战应用
  • Grok Code Fast 1 vs GitHub Copilot:哪个更适合你的编程需求?
  • Windows电脑也能装安卓应用?APK Installer让你轻松实现跨平台梦想!
  • 口碑好的短视频代运营公司探讨,快手短视频代运营服务哪家靠谱 - 工业品网
  • 顶会论文模块复现与二次创新:顶会 ICCV 2025 模块:Focal Modulation(焦点调制)替换自注意力,计算量减半
  • B站视频解析工具终极指南:快速获取视频资源的完整解决方案
  • 告别杂乱表格:用LaTeX的booktabs宏包打造优雅三线表
  • 电解电容发热缩寿命?用这3个方法给你的树莓派/工控板电源‘降温延寿’
  • 保姆级教程:在i.MX6ULL开发板上配置设备树,用RTS-GPIO驱动RS485温湿度传感器