随笔分类 -  背包专题

摘要:分组背包:有若干个商品的小组,每个小组里面有若干个商品,每一组只能选1或0个商品的背包问题。 #include<iostream> using namespace std; #define PII pair<int, int> #define v first #define w second con 阅读全文
posted @ 2020-09-04 16:07 yys_c 阅读(717) 评论(5) 推荐(1)
摘要:多重背包:每件物品不止一个,并且有个数限制的背包问题,注意和完全背包区分。 首先确定状态$f(i, j)表示从前i个物品中选择,并且总体积<= j的所有选法的集合,保存最大价值属性。$ 然后对$f(i, j)进行集合划分$ 此处出现了和多重背包之间的差别,完全背包可以对i号物品的选择情况无限划分下去 阅读全文
posted @ 2020-09-04 11:57 yys_c 阅读(120) 评论(0) 推荐(0)
摘要:完全背包:每一种物品可以选任意多次的背包问题。 经过分析,可以在01背包的代码基础上,增加一层循环,有以下暴力代码$O(n^3)$ #include<iostream> using namespace std; const int N = 1010; int n, m; int w[N], v[N] 阅读全文
posted @ 2020-09-02 18:14 yys_c 阅读(183) 评论(0) 推荐(0)
摘要:01背包:指的是每种物品只能选0次或1次的背包问题。 在01背包的基础上说一下闫氏dp分析法: 状态计算使用的集合划分方法: #include<iostream> using namespace std; const int N = 1010; int n, m; int f[N][N]; int 阅读全文
posted @ 2020-09-01 16:33 yys_c 阅读(169) 评论(0) 推荐(0)