#P11297. [NOISG2018 Prelim] Knapsack

[NOISG2018 Prelim] Knapsack

题目背景

翻译自 NOISG 2018 Prelim B. Knapsack

题目描述

你获得了超市的“免费购物”优惠,规则如下:

  • 你有一个容量为 SS 的购物篮。超市里共有 nn 样东西。第 ii 样东西的重量 wiw_i,价值为 viv_i,这样东西共有 kik_i 个。
  • 你可以向你的购物篮塞入你想买的东西,前提是这些东西的重量总和不超过购物篮的容量

现在,你只想知道,在满足规则的情况下,你最多能带多少价值的东西回去?

请不要低估本题目的难度,如果你看到这就想写,请查看【数据范围】一栏

输入格式

第一行两个正整数 S,nS,n

接下来 nn 行,每行三个正整数 vi,wi,kiv_i,w_i,k_i

输出格式

一行一个正整数,代表你最多能带多少价值的东西回去。

15 5 
4 12 1 
2 1 1 
10 4 1 
1 1 1 
2 2 1
15
20 3 
5000 15 1 
100 1 3 
50 1 4
5400

提示

【样例 #1 解释】

拿第 2,3,4,52,3,4,5 种东西,每种东西拿一个。

此时价值为 1515,重量为 88

【样例 #2 解释】

拿完第 1,21,2 种东西后拿一个第 33 种东西。

此时价值为 54005400,重量为 2020

【数据范围】

Subtask\text{Subtask} 分值 nn\leq kk\leq
00 样例
11 1212 11 -
22 1717 100100 11
33 2020 1010
44 2424 10910^9
55 2727 10510^5
66(hack) 00

对于 100%100\% 的数据:

  • 1wiS20001 \leq w_i \leq S \leq 2000
  • 1n1051 \leq n \leq 10^5
  • 1vi1061 \leq v_i \leq 10^6
  • 1ki1091 \leq k_i \leq 10^9