#P17162. [入门赛 #50] 神奇的背包
[入门赛 #50] 神奇的背包
题目描述
扶苏有一个容量为 的背包,她还有 种物品,每种物品要么只有一个,要么有无限多个。
一个第 种物品的大小为 ,价值为 。用 表示第 种物品的数量,则 表示该物品只有一个, 表示该物品有无限多个。
现在扶苏想从这些物品中选择若干个装进背包,满足:
- 所选物品的总大小不超过背包容量。
- 可以任意地选择只有一个的物品,但是有无限多的物品只能挑选至多一种(可以是任意多个)放进背包。
她想知道满足上述要求的情况下,所选物品的总价值最大可以是多少?
输入格式
本题单个测试点有多组测试数据。第一行是一个正整数,表示测试数据数量 。对每组数据,按如下格式读入:
第一行是两个整数,表示物品种类数 和背包容量 。
接下来 行,每行三个整数 表示第 种物品的大小、价值和数量。
输出格式
对每组数据,输出一行一个整数表示答案。
输入输出样例 #1
输入 #1
1
3 10
3 5 1
4 6 1
2 3 -1
输出 #1
15
输入输出样例 #2
输入 #2
1
3 5
2 5 1
3 6 1
3 4 -1
输出 #2
11
输入输出样例 #3
输入 #3
1
3 5
2 5 1
3 6 1
1 1 1
输出 #3
11
说明/提示
样例 1 解释
一种最优方案是全部都选择第三种物品放进背包,共可以放 个。
样例 2 解释
一种最优方案是第一种和第二种物品各放一个在背包里。
数据规模与约定
用 表示单个测试点内 的和,保证 。
- 对 的数据,,。
- 另有 的数据,。
- 另有 的数据,仅存在一种有无限多个的物品。
- 对 的数据,,,,。