物品质量 w[0] w[1]  w[2] ....... w[n]                背包容量c               T

物品价值 v[0]  v[1]  v[2]  .......  v[n]              物品种类 n                N

(一)设DP(x,y)   表示  从前x项物品中  取出装入  体积为y的背包 的  物品的最大价值。

前x项物品(0---- x-1 , X)   去装          体积容量为y的背包

|--------       0                                     当 x=0 或 y=0

DP(x,y)     |                DP(x-1,y)                           不装 第x 种

|                 DP( x-1,y-w[x] )  +  v[x]        y-w[x]>=0  装 第x 种

(二)设DP(x,y) 表示   从第x项物品开始  到 第n项物品  中取物品装入  体积为y 的背包  的    得到的最大价值。

第x项物品        (x,   x+1  ,  X+2  ,  x+3  , ...........M ......n)    

|--------       0                                     当 x=M+1  或 y=0

DP(x,y)     |                  DP(x+1,y)                           不装 第x 种

|                 DP( x+1,y-w[x] )  +  v[x]        y-w[x]>=0  装 第x 种

动态规划算法思想1:

设m[i][j]用来表示从前i项物品中区取出装入体积为j的背包的物品的最大价值。

其中i的范围为0到n,其中j的范围为0到c,程序要寻求的解为m[n][c]。

可以分以下三种情况:

①m[0][j]对所有的j的值为0(物品种类为0), m[i][0]对所有的i的值为0(体积为0)

②当前的体积j大于等于w[i]时, m[i][j]是下面两个量的最大值:m[i-1][j] (不装)和 m[i-1][j-w[i] ]+v[i] (装)

③当前的体积j小于w[i]时,m[i][j]等于m[i-1][j]

动态规划算法思想2:

设m[i][j]用来表示从第i项物品开始到第n项物品中取物品装入体积为j的背包的得到的最大价值。

其中i的范围为0到n-1,其中j的范围为0到c,程序要寻求的解为m[0][c]。

可以分为:

①m[n-1][j] 在当j>=0并且j< w[n-1] 时等于0(装不下),否则等于v[n-1] (可以装上)

②当前的体积j大于等于w[i]时, m[i][j]是下面两个量的最大值:m[i+1][j] 和 m[i+1][ j-w[i] ]+v[i]

③当前的体积j小于w[i]时,m[i][j]等于m[i+1][j]

转载于:https://www.cnblogs.com/2014acm/p/3908298.html

01背包 模板1 2 总结相关推荐

  1. 01背包模板、全然背包 and 多重背包(模板)

    转载请注明出处:http://blog.csdn.net/u012860063 贴一个自觉得解说不错的链接:http://www.cppblog.com/tanky-woo/archive/2010/ ...

  2. 01背包模板、完全背包 and 多重背包

    转载请注明出处:http://blog.csdn.net/u012860063 讲解链接:http://www.cppblog.com/tanky-woo/archive/2010/07/31/121 ...

  3. 【NOIP2006】【Luogu1060】开心的金明(01背包模板)

    problem 有n个物品,价格为wi, 重要度为vi. 在代价不超过m的情况下,最大化wi*vi的值 n < 30, m < 3e4 solution Qwq,Wi*Vi是确定的. 所以 ...

  4. AcWing 2. 01背包问题(01背包模板)

    题目链接 https://www.acwing.com/problem/content/2/ 思路 对于每一个物品我们能做一个选择,选上它(前提是当前的剩余背包容量够),或者不选,那么我们只需要在这其 ...

  5. hdu2602 骨头收集者 01背包 模板题

    Bone Collector Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T ...

  6. 【常用模板】 01背包

    加优化的01背包模板 #include <iostream> using namespace std; int w[210],v[210],f[210]; int main() {freo ...

  7. 动态规划dp(带模板题の超易懂版):01背包,完全背包,分组背包,多重背包,混合背包

    动态规划dp(带模板题の超易懂版):01背包,完全背包,分组背包,多重背包 01背包 && 完全背包 && 分组背包 の 视频教程:https://www.bilibi ...

  8. 习题整理(简单01背包 可用查并集2022/4/24)

    习题整理 提示:之前的习题在习题集合 文章目录 习题整理 一.诱人的宝藏 1.思路 2.代码 二.晚宴 1.思路 2.代码 三.医师之路 1.思路 2.扩展知识 3.代码 总结 提示:以下是本篇文章正 ...

  9. 01背包一维dp数组的实现

    二维的01背包模板 #include <iostream> #include <cstdio> #include <cstring>using namespace ...

最新文章

  1. AI在茫茫人海中,看到只有你被Deepfake了丨阿里安全出品
  2. 寻找项目中顶级Vue对象 (一)
  3. 如何创建最简单的 ABAP 数据库表,以及编码从数据库表中读取数据 (下)
  4. 记忆化搜索,FatMouse and Cheese
  5. 爱因斯坦为什么不是普通人?看他怎么喝茶就明白了,差距太明显了!没法比.......
  6. 【学习笔记】HTML基础:使用html制作网页
  7. 阶段5 3.微服务项目【学成在线】_day02 CMS前端开发_05-vuejs研究-vuejs基础-v-text指令...
  8. jq 遍历map集合
  9. kali安装后详细配置
  10. 全流程东方时尚C1考试经历
  11. 搬运:php入门安装教程
  12. 如何安装CentOS 8
  13. 迭代器怎么就节省内存了?
  14. VS2013 OpenCV 2.4.9 “HEAP:Invalid Address specified to RtlValidateHeap( 000D0000, 019FEF18 )” 错误
  15. [云计算学习3] Linux基础 : 使用chrony搭建时间服务器并让下游NTP同步时间
  16. 【uniapp】微信小程序微信授权新旧解决方案
  17. 【LRD,DLR】BST的后续遍历序列,二叉树中和为某一值的路径
  18. 使用swiftype实现站内搜索
  19. 2022-2028年中国宠物罐头行业市场全景调查及投资策略研究报告
  20. 百度,互联网的“流氓大亨”?

热门文章

  1. ACMer的AC福音!手动扩栈外挂!(防止栈溢出)
  2. 培智计算机教学论文,【培智数学论文】_培智数学教学论文
  3. vector的应用练习
  4. leetcode209. 长度最小的子数组 借这个题规范一下双指针写法
  5. 终于,我读懂了所有Java集合——map篇
  6. PaperNotes(10)-Maximum Entropy Generators for Energy-Based Models
  7. 《Python Cookbook 3rd》笔记(2.9):将Unicode文本标准化
  8. 云OS:Linux在桌面打翻身仗的机会?
  9. 是什么摧毁了程序员的工作效率
  10. 最易忽视的肾虚4件事