#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); 
	}
}