栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

背包优化方式和困惑(第二期)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

背包优化方式和困惑(第二期)

各位国庆快乐哈,祝各位玩的开心,我们明天就开学了,就多放一天枯了55555.

 愿有情人苦尽甘来最终两不辜负,愿保研边缘党成功上岸,愿我少掉几根头发╮(๑•́ ₃•̀๑)╭

这回讲完背包中的完全背包和多重背包和混合问题。

完全背包问题:每件物品无限多个,我们可以回想上次提到的01背包为什么从后向前遍历,是因为从后向前更新,后面的数组更新不会影响前面的排列。遇到完全背包可以反过来思考,让数组从前向后更新,就可以多次使用同一个物品。

 基础的依然是滚动数组优化空间复杂度:O(VN)

 还有一种二进制优化01背包的思想优化时间复杂度:O(Nlog[V/Ci])这个放在后面和多重背包一起讲。

这两种思想是常用的优化思路,要牢记并理解

多重背包问题:从简开始:

一个物品可以用Mi遍,那么最朴素的思想便是用Mi遍01背包复杂度O(NVMi)

既然看到多次使用的01背包,我们可以用到上面提过的二进制优化,把一个物品拆成如下个数(0,1,2,4,8,.....,2的n次方 <=mi)这样可以用logmi的复杂度遍历所有的使用个数

给出伪码O(NVlogMi)

 

 

 

 思路的核心就是二进制优化。

那么有没有一种更为先进的方法优化呢?(前置科技:单调队列  前置典型例题:滑窗问题)

希望前面写过的单调队列优化终极版多重背包能够帮到你(1条消息) 多重背包究极版-单调队列优化!(acwing多重背包问题Ⅲ)_我们教练不会签到的博客-CSDN博客

小结:无论是01背包还是多重背包用的思路起点完全相同(除了单调队列)均使用滚动数组进行优化,这个过程中不断地寻找局部最优解,其中可以用二进制思想进行数量优化,没有顺序的要求,任何物品都能没有顾虑的加入(没有顺序要求)

混合背包问题:前三种组合,没啥能讲的,建议用函数,省事:

作为背包问题的几种基本组合的产物的简单组合,本身和之前提到的没有区别 ,只要基本功扎实,就能完全解决这种问题。

之后的几天还是以每日一题为主,等我学会了有依赖的背包再来总结一下qwq

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/293242.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号