#P2519. Lucas的分组背包

Lucas的分组背包

题目描述

Lucas 有一个背包,背包的容量为 VV

nn 件物品,第 ii 件物品的体积是 cic_i,价值是 wiw_i,分组编号是 gig_i

同一个分组中最多只能选一件物品放入背包。

Lucas 想要将其中一些物品装入背包,并且在满足

  • 装入背包的物品体积之和不超过 VV

的情况下,

  • 装入背包的物品价值之和最大。

求:最大价值。

输入格式

第一行,三个整数 nnmmVV,分别表示物品数量,分组数量,以及背包的容量。

接下来 nn 行,每行包含三个整数 cic_iwiw_igig_i,表示第 ii 件物品的体积和价值以及所属的分组编号。

输出格式

输出一个整数,表示放入背包的物品体积之和 V\le V 的情况下能够获得的最大价值。

样例

3 2 12
4 3 1
5 8 2
6 11 2
14
6 5 20
5 7 3
7 10 2
10 23 3
6 8 2
11 25 3
5 6 1
35

说明/提示

数据规模与约定

  • 对于 20%20\% 的数据,n20n \le 20ci,wi,V2000c_i, w_i, V \le 2000
  • 对于 100%100\% 的数据,1mn2001 \le m \le n \le 2001ci,V21061 \le c_i, V \le 2 \cdot 10^61wi1091 \le w_i \le 10^91pim1 \le p_i \le m,可能存在某些分组中没有物品的情况。