第三讲 多重背包问题(对背包九讲的学习)

news/2024/5/18 22:10:57

题目

有N种物品和一个容量为V的背包。第i种物品最多有n[i]件可用,每件费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。

基本思路:

对每个物品都考虑拿几个(这个很好理解)

递推式:f[i][v]=max{f[i-1][v-k*c[i]]+k*w[i]|0<=k<=n[i]}

时间复杂度是O(V*Σn[i])

转换为为01背包问题:

这里利用了二进制的性质优化

时间复杂度:O(V*Σlog n[i])

 

例子1:(注意看数字的颜色)

 

7个物品i的多重背包问题=01背包问题(物品1=1个物品i,物品2=2个物品i,物品3=4个物品i,,,)

2^0+2^1+2^2=7  7-7=0,不用补了

 

例子2:

8个物品i的多重背包问题=01背包问题(物品1=1个物品i,物品2=2个物品i,物品3=4个物品i,物品4=1个物品i)//蓝色地方是补到8

1+2+4=7 < 8    8-7=1,再1

注意每次选的时候还是要判断是否空间超出了

 

例子3:

5个物品i的多重背包问题=01背包问题(物品1=1个物品i,物品2=2个物品i,物品3=2个物品i)//蓝色地方是补到5

1+2=3<5  5-3=2,再补个2

比方说例子3我们看到了,物品1,物品2,物品3可以组合成0~5的任何数

这样一来,就从多重背包转换成了01背包

 继续优化:

图片截图自 背包九讲

最后那个O(Vn)的方法我还没学,先放着,以后其他学完了再学他

 

转载于:https://www.cnblogs.com/zyacmer/p/10011362.html


http://www.niftyadmin.cn/n/3089494.html

相关文章

分页插件php,PHP框架Laravel插件Pagination实现自定义分页

Laravel 的分页很方便&#xff0c;其实扩展起来也挺容易的&#xff0c;下面就来做个示例&#xff0c;扩展一下 paginate() 和 simplePaginate() 方法&#xff0c;来实现我们自定义分页样式&#xff0c;比如显示 "上一页" 和 "下一页" &#xff0c;而不是 &…

项目Alpha冲刺 Day9

1&#xff09;站立式会议&#xff1a; 2&#xff09;今日安排&#xff1a; 计划完成活动开始与活动结束两个模块&#xff08;苏华、赵晓南&#xff09;&#xff0c;具体活动详情页面&#xff08;范媛媛&#xff09;以及今日完成对应模块的相关测试&#xff08;陶涛&#xff09;…

java保护访问,Java中受保护的访问修饰符

小编典典该网页链接MadProgrammer给出了一个体面的解释&#xff1a;“ protected修饰符指定只能在自己的包中访问该成员(与package-private一样)&#xff0c;并且只能由其在另一个包中的类的子类访问。”这意味着受保护的成员必须直接通过其定义的类或该类的子类进行访问&#…

如何做好一个Team leader(转)

1.领导和管理 人们乐于被领导&#xff1b;他们不喜欢被管理&#xff0c;不喜欢像牛一样被驱赶或指挥。 管理者强迫人们服从他们的命令&#xff0c;而领导者则会带领他们一起工作。 管理是客观的&#xff0c;没有个人感情因素&#xff0c;它假定被管理者没有思想和感受…

Java 接口和抽象类是什么,有什么区别

抽象(abstract)和接口(interface)在Java中都是关键字&#xff0c;也就说明他们足够重要&#xff0c;而抽象类和接口为我们面向对象编程提供了非常大的帮助。下面我们就一起来回顾这基础知识。 抽象类 在构建某些未实现方法的类时&#xff0c;你可能会第一个想到接口&#xff0c…

solidity[47]-interface

接口接口本意是物体之间连接的部位。例如电脑的usb接口可以用来连接鼠标也可以连接U盘和硬盘。因此&#xff0c;使用标准的接口可以极大的拓展程序的功能。在solidity语言中&#xff0c;接口可以用来接受相同规则的合约&#xff0c;实现可更新的智能合约。接口定义接口需要有in…

php 服务器打印,php – 如何在服务器上呈现网页(无GUI)进行打印?

我正在尝试用PHP脚本实际打印页面到办公室打印机.这是我到目前为止所得到的&#xff1a;我在服务器上安装了一台打印机,我可以通过命令行的print命令用PHP向它发送作业.我也可以用我的PHP脚本编写纯文本文件,然后将它们添加到打印提示中.所以使用PHP打印PHP生成的纯文本文件就可…

WinForm窗体之间交互的一些方法[转]

实际上过去我也写过类似的主题&#xff0c;这里把各种方法总结一下&#xff0c;内容的确基础了一些&#xff0c;所以这篇文章是写给刚刚学习C#的同行们的&#xff0c;希望对大家有些帮助吧&#xff01;很抱歉&#xff0c;这篇文章没有诡异的bug来勾起大家的兴趣&#xff0c;但是…