首页 > 其他分享 >背包九讲(还没写完

背包九讲(还没写完

时间:2023-02-05 21:56:46浏览次数:53  
标签:背包 九讲 luogu 复杂度 max 基本思路 优化

背包九讲的个人整理

目录

1.01背包

题目

N种物品,每种物品只有一个,背包容量为V,第i件物品的所占空间为v[i],价值是w[i]。
在不超过背包容量的前提下,求最大化价值之和

基本思路

对于一个物品我们可以选择放或者是不放
用子问题来定义状态:f[i][j]选到第i个物品时,容量为j的背包的最大化价值之和(需要注意的是此时背包不一定需要装满)则其状态转移方程为

f[i][j]=max(f[i-1][j],f[i-1][j-v[i]]+w[i]);

这个方程非常重要,几乎所有背包问题都与它相关或由其衍生
因为我们只对第i件物品进行考虑(即有两种方案:放或者是不放)

选择不放时:f[i][j]=f[i-1][j];
选择放时  :f[i][j]=f[i-1][j-v[i]]+w[i];

优化空间

以上方法的时间和空间复杂度都是Θ(V*N),时间复杂度已经不能继续优化了,但空间复杂度却能优化到Θ(V);
先考虑上述的基本思路如何实现肯定是有一个主循环for i 1~N 每次算出f[i][0~V]的 值
那么能否只用一个数组f[0~V]保证每次循环完成得到的f[j]就是我们想要的f[i][j]呢?
即优化代码之后:

 for(int i=1;i<=N;i++)
 for(int j=V;j>=v[i];j--)
 f[j]=max(f[j],f[j-v[i]]+w[i]);//等价于f[i][j]=max(f[i−1][j],f[i−1][j−c[i]]+w[i])

例题练习

luogu P1048 [NOIP2005 普及组] 采药
luogu P1049 [NOIP2001 普及组] 装箱问题
luogu P1060 [NOIP2006 普及组] 开心的金明

2.完全背包

3.多重背包

4.混合背包

5.二维背包

6.分组背包

7.依赖背包

8.树上背包

9.背包方案计数

标签:背包,九讲,luogu,复杂度,max,基本思路,优化
From: https://www.cnblogs.com/ydclyq/p/17067420.html

相关文章

  • C 阿宁的大背包【2023牛客寒假算法基础集训营6】
    C 阿宁的大背包原题链接代码点击查看代码#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<vector>#include<......
  • C 清楚姐姐学01背包(Easy Version)【2023牛客寒假算法基础集训营4】
    C 清楚姐姐学01背包(EasyVersion)原题链接思路求出强制不选择某一物品的最大价值\(v1\),以及强制选择某一物品的最大价值\(v2\)不选择比选择大说明一定不选->......
  • P1466 集合 Subset Sums(01背包)
    题目描述对于从1到N(1<=N<=39)的连续整数集合,能划分成两个子集合,且保证每个集合的数字和是相等的。举个例子,如果N=3,对于{1,2,3}能划分成两个子集合,每个子集合的所有数字......
  • 01背包
    01背包有\(N\)件物品和一个容量是\(V\)的背包。每件物品只能使用一次。第\(i\)件物品的体积是\(v_i\),价值是\(w_i\)。求解将哪些物品装入背包,可使这些物品的总......
  • 有依赖的背包问题
    题目连接:https://www.acwing.com/problem/content/10/简单来说就是在子节点和父节点有制约条件下选择物品来取得最大值  其实可以这样想:将子树按照体积划分为0~m份,......
  • 蓝桥杯 求解 01 背包问题
    题目描述实现一个算法求解01背包问题。背包问题的介绍如下:已知一个容量为 total_weighttotalw​eight 的背包,有不同重量不同价值的物品,问怎样在背包容量限制下达到......
  • 蓝桥杯 求解完全背包问题
    题目描述实现一个算法求解完全背包问题。完全背包问题的介绍如下:已知一个容量为totalw​eight 的背包,有不同重量不同价值的物品,问怎样在背包容量限制下达到利益最大化......
  • P2014 选课 ( 树上背包 )
    先看树上背包的板子:假设我们的树长这样:那么其实我们就有个比较朴素的想法:对一个结点对它的儿子们进行背包dp比如对于1号点我们就可以对2号3号进行背包dp问题是4......
  • 前缀后缀01背包(牛客2023多校D清楚姐姐学01背包)
    0x1f题目:https://ac.nowcoder.com/acm/contest/46812/D0x2f题意:定义初始背包的最优解\(V_{max}\)定义n个物品去掉任意一个后,最优解为\(V_{max}'\)每一个物品\(w......
  • 背包问题
    简化的01背包分析:原问题:i件物品选若干件组成的小于V的最大体积是多少?用可行性描述就可bool数组\(f[i][j]\)表示前i个物品能否放满体积为j的背包枚举最后一次决策—......