#P832. 【基础】分组背包问题

    ID: 2376 传统题 1000ms 128MiB 尝试: 0 已通过: 0 难度: 3 上传者: 标签>动态规划背包算法普及分组背包背包问题dp

【基础】分组背包问题

题目描述

NN 组物品和一个容量为 VV 的背包。每组物品有若干个,同一组内的物品最多只能选一个。每件物品的体积是 vijv_{ij},价值是 wijw_{ij},其中 ii 是组号,jj 是组内编号。求解将哪些物品装入背包,可使物品总体积不超过背包容量,且总价值最大。输出最大价值。

输入格式

第一行有两个整数 N,VN, V,用空格隔开,分别表示物品组数和背包容量。

接下来有 NN 组数据:

  • 每组数据的第一行有一个整数 SiS_i,表示第 ii 个物品组的物品数量;
  • 接下来 SiS_i 行,每行有两个整数 vij,wijv_{ij}, w_{ij},用空格隔开,分别表示第 ii 组第 jj 个物品的体积和价值。

输出格式

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

样例

3 5
2
1 2
2 4
1
3 4
3
1 3
2 5
3 3
8

样例解释
共有 33 组物品,背包容量为 55。一种最优选择为:

  • 11 组选第 22 件物品(体积 22,价值 44);
  • 22 组选第 11 件物品(体积 33,价值 44);
  • 33 组不选。 总体积 2+3=552+3=5 \le 5,总价值 4+4=84+4=8,为最大值。

数据范围与提示

  • 0<N,V1000 < N, V \le 100
  • 0<Si1000 < S_i \le 100
  • 0<vij,wij1000 < v_{ij}, w_{ij} \le 100