【模板】混合背包问题

【模板】混合背包问题

暂无测试数据。

题目描述

有 \(N\) 种物品和一个容量是 \(V\) 的背包。

物品一共有三类

  • 第一类物品只能用 \(1\) 次;
  • 第二类物品可以用无限次;
  • 第三类物品最多只能用 \(s_i\) 次。

第 \(i\) 种物品的体积是 \(v_i\),价值是 \(w_i\)。

求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。
输出最大价值。

输入格式

第一行两个整数,\(N,V\),用空格隔开,分别表示物品种数和背包容积。

接下来有 \(N\) 行,每行三个整数 \(v_i,w_i,s_i\),用空格隔开,分别表示第 \(i\) 种物品的体积、价值和数量。

  • \(si=−1\) 表示第 \(i\) 种物品只能用 \(1\) 次;
  • \(s_i=0\) 表示第 \(i\) 种物品可以用无限次;
  • \(si>0\) 表示第 \(i\) 种物品可以使用 \(s_i\) 次。

输出格式

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

样例 #1

样例输入 #1

4 5
1 2 -1
2 4 1
3 4 0
4 5 2

样例输出 #1

8

提示

【数据范围】

对于 \(100\%\) 的数据 \(1\le N\le10^3\),\(1\le v_i,w_i\le10^6\),\(-1\le s_i\le10^4\)。