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