#DAY020. 2023.12.13.背包dp
2023.12.13.背包dp
http://angao.zhuma.online/d/angao/p?q=category%3A%E8%83%8C%E5%8C%85dp
学习资料:oi-wiki 背包 DP
int f[100001], V;
void pack01(int c, int w) { // 对体积为c价值为w的物品做01背包
for (int i = V; i >= c; i--)
f[i] = max(f[i], f[i-c]+w);
}
void pack_comp(int c, int w) { // 对体积为c价值为w的物品做完全背包
for (int i = c; i <= V; i++)
f[i] = max(f[i], f[i-c]+w);
}
void pack_mul(int c, int w, int k) { // s物品数量 多重背包
if (V / c <= k)
pack_comp(c, w);
else {
for (int i = 1; i <= k; i *= 2)
pack01(c*i, w*i), k -= i;
if (k)
pack01(c*k, w*k);
}
}