【问题】

有N件物品和一个容量为V的背包。第i件物品的体积w[i],价值是c[i]。这些物品被划分为若干组,每组中的物品互相冲突,最多选一件。

求:将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。

【算法】

这个问题变成了每组物品有若干种策略:是选择本组的某一件,还是一件都不选。

设f[k][v]表示前k组物品花费费用v能取得的最大权值,则有:f[k][v]=max{f[k-1][v],f[k-1][v-w[i]]+c[i] | 物品i属于第k组}

使用一维数组的伪代码如下:

for 所有的组kfor v=V..0for 所有的i属于组kf[v]=max{f[v],f[v-w[i]]+c[i]}

注意这里的三层循环的顺序,“for v=V..0”这一层循环必须在“for 所有的i属于组k”之外。这样才能保证每一组内的物品最多只有一个会被添加到背包中。

另外,可以对每组内的物品应用P02中“一个简单有效的优化”。

动态规划 —— 背包问题 P06 —— 分组背包相关推荐

  1. 动态规划背包问题之01背包详解

    文章目录 一.问题引入 1.什么是动态规划? 2.什么是背包问题? 3.什么是01背包? 4.背包问题怎么做? 二.例题讲解 1.题目: 2.分析 2.1 第一步:状态表示 2.2 第二步:确定状态转 ...

  2. 多重背包问题与分组背包

    多重背包的含义: 物品数量不再是无穷多. 看题: 思路,既然物品个数有限,但还要判断要装几个,我们可以用暴力的做法,三重循环,每层循环控制自己的变量,容易理解.第三层循环就是控制装的物品的个数,我们通 ...

  3. 动态规划 背包问题小结 0-1背包(采药 九度第101题) 完全背包(Piggy-Bank POJ 1384) 多重背包(珍惜现在,感恩生活 九度第103题)

    本小结介绍0-1背包.完全背包以及多重背包问题 记忆要点: 0-1背包:二维数组情况下,顺序遍历体积或者倒序均可以                降维情况下需倒序遍历体积 完全背包:数组降维+顺序遍历 ...

  4. 动态规划 —— 背包问题 P03 —— 多重背包

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

  5. 动态规划 —— 背包问题 P02 —— 完全背包

    [概述] 完全背包问题也是一个相当基础的背包问题,它有两个状态转移方程,分别在"基本思路"以及"O(VN)的算法"的小节中给出. [题目] 有N种物品和一个容量 ...

  6. 动态规划 —— 背包问题 P01 —— 0-1背包

    [概述] 0-1背包问题是最基本的背包问题,它包含了背包问题中设计状态.方程的最基本思想,另外,别的类型的背包问题往往也可以转换成0-1背包问题求解. 特点:每种物品仅有一件,可以选择放或不放. [题 ...

  7. 动态规划背包问题之多重背包详解

    背包问题前几篇文章: 01背包详解 完全背包详解 文章目录 一.什么是多重背包问题? 二.例题分析 1. 题目: 2.第一种:朴素做法 3.第二种:二进制优化 4.第二种:单调队列优化<待写&g ...

  8. 动态规划 —— 背包问题 P04 —— 混合背包

    [概述] 如果将P01.P02.P03混合起来.也就是说,有的物品只可以取一次(01背包),有的物品可以取无限次(完全背包),有的物品可以取的次数有一个上限(多重背包).应该怎么求解呢? [01背包与 ...

  9. AcWing 9. 分组背包问题(分组背包模板)

    题目连接 https://www.acwing.com/problem/content/description/9/ 思路 对于一个组里面的物品只能选一个我们可以通过集合划分的方式来看待这个问题,f[ ...

最新文章

  1. Linux下对文件的操作及添加新用户
  2. 比CycleGAN更强的非监督GAN----DistanceGAN
  3. MATLAB实战系列(十四)-如何通过YALMIP和CPLEX求解小规模(CVRP)路径调度问题(附MATLAB代码)
  4. Linux安装好php后找不到php.ini
  5. 全国计算机等级考试题库二级C操作题100套(第61套)
  6. linux常用命令-压缩解压命令
  7. Flutter NestedScrollView实现的一个经典滑动折叠头部图片的效果
  8. SpringBoot2.1.5(11)---目录文件结构讲解
  9. ofo在北京上线有桩模式,违规最高罚20元
  10. 【aviator】aviator 报错 EOF while reading string at index
  11. unity, Gizmos.DrawMesh一个坑
  12. win10安装迅雷精简版处理方法---发布者不受信任
  13. BIO | NIO | AIO (Java版)
  14. 一只视频程序猿的移动直播SDK初体验
  15. 月薪达到1万的web前端工程师,都会些什么呢?(附路线资料)
  16. 【渝粤题库】广东开放大学物业管理基本制度与政策 形成性考核 (2)
  17. 数说CS|北京大学前沿交叉学科研究院大数据研究中心保研生源大起底!
  18. 迎接天翻地覆的重大演变:微软加速器区块链论坛成功举办
  19. 古琴初学者购琴指南(值得收藏)
  20. 如何批量将多个 Word 文档快速合并成一个文档

热门文章

  1. CC2530通用I/O
  2. 8年了,这几个时间API你用过吗?
  3. 架构概述之架构演化、模式与核心要素
  4. CTO怒了:再写if-else,逮着罚款1000!
  5. 自动化集成:Jenkins管理工具详解
  6. 编程体系结构(01):Java编程基础
  7. 美股,港股和A股三者之间的关系和差别
  8. 关于hexo更新到GitHub后博客内容未变问题
  9. LeetCode每日一题:回文数(No.9)
  10. (新聞) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球