#B2173. 多重背包

多重背包

题目描述

你有一个容量为 VV 的背包,以及 nn 种物品。第 ii 种物品的体积为 wiw_i,每件价值为 valival_i,最多有 cic_i 件。

你可以选择每种物品若干件放入背包,但同一种物品选择的件数不能超过 cic_i,且总容量不能超过 VV

请你求出在不超过背包容量的前提下,能获得的最大总价值。

形式化题意:设第 ii 种物品选择 xix_i 件,则需要满足:

$$\sum_{i=1}^{n} x_i \cdot w_i \le V,\quad 0 \le x_i \le c_i$$

最大化目标:

maxi=1nxivali\max \sum_{i=1}^{n} x_i \cdot val_i

输入格式

第一行两个整数 n,Vn, V,表示物品种类数与背包容量。

接下来 nn 行,每行三个整数 wi,vali,ciw_i, val_i, c_i,分别表示第 ii 种物品的体积、价值与最多件数。

输出格式

输出一个整数,表示最大总价值。

3 10
3 4 2
4 5 3
2 3 4
14

提示

样例解释 #1

一种可行的最优方案是:

  • 选第 1 种物品 22 件:体积 2×3=62\times 3=6,价值 2×4=82\times 4=8
  • 选第 3 种物品 22 件:体积 2×2=42\times 2=4,价值 2×3=62\times 3=6

总容量 6+4=10106+4=10 \le 10,总价值 8+6=148+6=14,为最大值。

数据范围

对于 40%40\% 的数据,1n91\le n \le 91V10001\le V \le 10001ci51\le c_i \le 5

对于 100%100\% 的数据,1n5001\le n \le 5001V10001\le V \le 10001ci1001\le c_i \le 100