问题陈述
有 N 块,编号为 1,2,…,N 。对于每个 i ( 1≤i≤N ),积木 i 的重量为 wi ,承重能力为 si ,价值为 vi 。
太郎决定从 N 个积木中选择一些,按照一定顺序垂直堆叠起来,建造一座塔。在这里,塔必须满足以下条件:
- 对于塔中的每块积木 i ,堆叠在其上方的积木的重量之和不大于 si 。
求塔中所包含的图块的最大可能价值之和。
限制因素
- 所有输入值均为整数。
- 1≤N≤103
- 1≤wi,si≤104
- 1≤vi≤109
输入
输入内容由标准输入法提供,格式如下:
- N
- w1 s1 v1
- w2 s2 v2
- :
- wN sN vN
输出
打印塔中各图块价值的最大和。
如果按照从上到下的顺序堆叠图块 2,1 ,这座塔将满足条件,总值为 30+20=50 。
块 1,2,3,4 应按从上到下的顺序堆叠。
答案可能不适合 32 位整数类型。
例如,我们应该按照从上到下的顺序堆叠区块 5,6,8,4 。
来源
https://atcoder.jp/contests/dp/tasks/dp_x