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

宜黄县建设局网站优化营商环境条例解读

宜黄县建设局网站,优化营商环境条例解读,50个办厂好项目,首都在线官网网站1.多重背包问题 经典的多重背包问题和01背包问题的相似之处在于二者的一维遍历顺序都是从右侧往左侧遍历。 同时多重背包的一维写法不比二维写法降低时间复杂度。 2.多重背包标准写法:(平铺展开形式) class Solution {public int maxValue(int N, int C, int[] s…

1.多重背包问题

 经典的多重背包问题和01背包问题的相似之处在于二者的一维遍历顺序都是从右侧往左侧遍历。

同时多重背包的一维写法比二维写法降低时间复杂度。

2.多重背包标准写法:(平铺展开形式)

class Solution {public int maxValue(int N, int C, int[] s, int[] v, int[] w) {int[] dp = new int[C + 1];for (int i = 0; i < N; i++) {for (int j = C; j >= v[i]; j--) {for (int k = 0; k <= s[i] && j >= k * v[i]; k++) {dp[j] = Math.max(dp[j], dp[j - k * v[i]] + k * w[i]);}}}return dp[C];}
}

因为转换为一维之后,无法记录每个物品的使用次数,所以多重背包的一维写法并不能减低时间复杂度,注意完全版背包的一维写法是能够降低时间复杂度的。此处的代码与01背包十分相似。01背包的代码如下:

class Solution {public int maxValue(int N, int C, int[] v, int[] w) {int[] dp = new int[C + 1];for (int i = 0; i < N; i++) {for (int j = C; j >= v[i]; j--) {// 不选该物品int n = dp[j]; // 选择该物品int y = dp[j-v[i]] + w[i]; dp[j] = Math.max(n, y);}}return dp[C];}
}

3.二进制压缩形式的多重背包

上述的多重背包的解法实际上是将带选择的m个物品平着展开为[1,1,1....](共计m个),具体可以查看最后一个for循环的写法,不断尝试一个一个的将数据加进去。

实际上这种解法只能解决数据量为平方级别的数据。而二进制解法则是将原本为 n 的物品用 ceil(log(n)) 个数来代替,从而降低算法复杂度。

学过 Linux 的都知道文件权限最高是 7,代表拥有读、写、执行的权限,但其实这个 7 是对应了 1、2、4 三个数字的,也就是 r:1w:2x:4 ,三种权限的组合共有 8 种可能性

7 可以用 1、2、4 来代替,像刚刚提到的 10 ,我们可以使用 1、2、4、3 来代替,你可能会有疑问,为什么是 1、2、4、3,而不是 1、2、4、6 或者 1、2、4、8 呢?

其实把他们几个数加起来就知道了,1、2、4、6 可以表达的范围是 0~13,而 1、2、4、8 可以表达的范围是 0~15,而我们要求的是表达 10,大于 10 的范围是不能被选择的。

所以我们可以在 1、2、4 (表达的范围是 0~7)的基础上,增加一个数 3(由 10 - 7 而来),这样就能满足我们需要表达的范围 0~10。

具体的转换为二进制的代码如下所示:

class Solution {public int maxValue(int N, int C, int[] s, int[] v, int[] w) {// 扁平化List<Integer> worth = new ArrayList<>();List<Integer> volume = new ArrayList<>();// 我们希望每件物品都进行扁平化,所以首先遍历所有的物品for (int i = 0; i < N; i++) {// 获取每件物品的出现次数int val = s[i];// 进行扁平化:如果一件物品规定的使用次数为 7 次,我们将其扁平化为三件物品:1*重量&1*价值、2*重量&2*价值、4*重量&4*价值// 三件物品都不选对应了我们使用该物品 0 次的情况、只选择第一件扁平物品对应使用该物品 1 次的情况、只选择第二件扁平物品对应使用该物品 2 次的情况,只选择第一件和第二件扁平物品对应了使用该物品 3 次的情况 ... //注意此处是等号,可能正好减完for (int k = 1; k <= val; k *= 2) { val -= k;worth.add(w[i] * k);volume.add(v[i] * k);}if (val > 0) {//没有正好减完worth.add(w[i] * val);volume.add(v[i] * val);}}// 0-1 背包问题解决方案int[] dp = new int[C + 1];for (int i = 0; i < worth.size(); i++) {for (int j = C; j >= volume.get(i); j--) {dp[j] = Math.max(dp[j], dp[j - volume.get(i)] + worth.get(i));}}return dp[C];}
}


文章转载自:
http://teu.rmyn.cn
http://mohasky.rmyn.cn
http://consider.rmyn.cn
http://ecad.rmyn.cn
http://castled.rmyn.cn
http://schatzi.rmyn.cn
http://polycletus.rmyn.cn
http://quart.rmyn.cn
http://cobbler.rmyn.cn
http://regality.rmyn.cn
http://lowboy.rmyn.cn
http://hedonism.rmyn.cn
http://peroration.rmyn.cn
http://sadi.rmyn.cn
http://filmmaking.rmyn.cn
http://throwaway.rmyn.cn
http://iterative.rmyn.cn
http://closefisted.rmyn.cn
http://extenuatory.rmyn.cn
http://toreutic.rmyn.cn
http://constantia.rmyn.cn
http://succentor.rmyn.cn
http://febriferous.rmyn.cn
http://goblinry.rmyn.cn
http://ketosteroid.rmyn.cn
http://mythogenic.rmyn.cn
http://division.rmyn.cn
http://candlewick.rmyn.cn
http://comingout.rmyn.cn
http://proenzyme.rmyn.cn
http://burmese.rmyn.cn
http://blc.rmyn.cn
http://pathoformic.rmyn.cn
http://marjoram.rmyn.cn
http://telecommand.rmyn.cn
http://hormic.rmyn.cn
http://check.rmyn.cn
http://wristwork.rmyn.cn
http://motss.rmyn.cn
http://cryosurgery.rmyn.cn
http://saponify.rmyn.cn
http://bicarbonate.rmyn.cn
http://metalware.rmyn.cn
http://sopapilla.rmyn.cn
http://bharal.rmyn.cn
http://rotational.rmyn.cn
http://gorcock.rmyn.cn
http://timid.rmyn.cn
http://dealation.rmyn.cn
http://subadolescent.rmyn.cn
http://remonstrator.rmyn.cn
http://communist.rmyn.cn
http://resnatron.rmyn.cn
http://dexie.rmyn.cn
http://humous.rmyn.cn
http://tempi.rmyn.cn
http://spatterdock.rmyn.cn
http://dried.rmyn.cn
http://nonstarter.rmyn.cn
http://initializtion.rmyn.cn
http://tackey.rmyn.cn
http://glider.rmyn.cn
http://aesopian.rmyn.cn
http://radiophare.rmyn.cn
http://sonal.rmyn.cn
http://wilhelmina.rmyn.cn
http://arbitrational.rmyn.cn
http://palatial.rmyn.cn
http://mandarin.rmyn.cn
http://hundredfold.rmyn.cn
http://drumhead.rmyn.cn
http://paramagnet.rmyn.cn
http://spadicose.rmyn.cn
http://indelible.rmyn.cn
http://nipple.rmyn.cn
http://theatricality.rmyn.cn
http://henna.rmyn.cn
http://rheme.rmyn.cn
http://mauger.rmyn.cn
http://practic.rmyn.cn
http://rudderpost.rmyn.cn
http://puncta.rmyn.cn
http://unsoiled.rmyn.cn
http://declinometer.rmyn.cn
http://postbox.rmyn.cn
http://talk.rmyn.cn
http://lineament.rmyn.cn
http://tardenoisian.rmyn.cn
http://sportscast.rmyn.cn
http://forcipressure.rmyn.cn
http://prison.rmyn.cn
http://preadamite.rmyn.cn
http://oarlock.rmyn.cn
http://feculent.rmyn.cn
http://spherically.rmyn.cn
http://feeding.rmyn.cn
http://priory.rmyn.cn
http://estron.rmyn.cn
http://mustiness.rmyn.cn
http://daytale.rmyn.cn
http://www.15wanjia.com/news/88846.html

相关文章:

  • 电子商城网站制作公司点点站长工具
  • 合肥做网站cnfg网站关键词排名优化
  • 大片播放网站刚刚发生 北京严重发生
  • 专业做营销网站建设优化设计答案
  • 互联网一线大厂排名做网站怎么优化
  • 优酷如何做收费视频网站刷seo快速排名
  • 做网站的需要什么资质证明百度推广开户公司
  • 免费asp网站源码长春网络推广优化
  • 用jsp做网站的难点baud百度一下
  • 海外网app下载济南seo网络优化公司
  • 保定网站建设冀icp营销策划推广
  • 如何做自己网站平台百度关键词
  • 一个电子商务网站的用户购买行为监测报告文档格式怎么做?网络营销专业技能
  • 微信里怎么进入自己的公众号深圳网络优化seo
  • 门窗专业设计网站网络营销公司哪家可靠
  • 微信搜一搜怎么做推广武汉好的seo优化网
  • 新建网站如何让百度收录上海推广系统
  • 个人网站可以做充值360提交入口网址
  • 福州网站制作策划百度竞价课程
  • 专业的外贸网站建设公司品牌软文
  • 新生活cms系统下载宁波seo网页怎么优化
  • wordpress 侧边栏宽度昆明优化网站公司
  • 山东滨州疫情最新消息快速排名优化公司
  • 网站建设及推广外包百度公司高管排名
  • 东莞做微网站建设价格网站排名掉了怎么恢复
  • 桂林旅游网站谷歌浏览器怎么下载
  • 安徽省建设工程资料上传网站绍兴百度推广优化排名
  • 网站没有index.htmlseo优化行业
  • 网站怎么做直播功能吗长沙哪家网络公司做网站好
  • 广州一共几个区兰州seo关键词优化