#SZSY1010. 堆叠背包
堆叠背包
题目描述
有一个最大承重为 的背包,以及 件物品。背包最初为空,放入其中的物品从下到上堆叠。
第 件物品有五个属性:放入时刻 、取出时刻 、重量 、承重 和价值 ,其中 。
你可以选择不使用某件物品,此时得不到它的价值。对于选择使用的物品,必须在 时刻把它放在当前所有物品的最上方,并在 时刻将它取出;取出时,它必须位于最上方,随后获得价值 。
在任何时刻,背包中所有物品的总重量都不能超过 。对于背包中的每件物品 ,位于它上方的所有物品的重量之和都不能超过 ;这里不包含物品 自身的重量。
同一时刻可以进行多次放入或取出操作,操作顺序由你决定。一个物品取出后立即离开背包,不再影响该时刻后续操作的承重。
求能够获得的最大价值之和。
输入格式
第一行包含两个整数 。
接下来 行,每行包含五个整数 ,依次描述一件物品。
输出格式
输出一个整数,表示能够获得的最大价值之和。
数据范围
对于所有数据,,,,,。
任意两件不同物品的放入时刻和取出时刻不会同时相同。
子任务
| 编号 | 分值 | 缩减范围 | 附加限制 |
|---|---|---|---|
| 1 | 20 | — | |
| 2 | — | 所有物品的 相同 | |
| 3 | 60 | — |
样例 1
5 5
0 6 1 2 1
1 2 1 1 1
1 3 1 1 1
3 6 2 1 2
4 5 1 1 1
5
样例 1 说明
选择第 件物品。
在时刻 放入物品 ;时刻 先放入物品 ,再放入物品 。此时物品 上方的总重量为 ,恰好达到其承重。
时刻 取出物品 ;时刻 先取出物品 ,再放入物品 ;时刻 先取出物品 ,再取出物品 。总价值为 。
该方案不选择物品 :在时刻 再放入它,会使物品 上方的总重量变为 ,超过其承重 。