DAY1

发布时间 2023-07-10 13:37:19作者: ljfyyds

T1

人生在世就要不断做出选择。一般来说,选择牵涉着不止一个方面的利益,在不同的利益方面,一个选项的影响也可以或正或负。比如,选择参加本次夏令营,你将付出一定的金钱和时间,同时以算法能力的提升作为回报。为了做出最优化的选择,人们投入了大量资源研究并应用各种运筹学(Operations Research)理论和算法。各种规划问题同样也是算法竞赛的重要组成部分,并将在此次夏令营的最后两次课详细介绍。在本次练习中我们关注一个较为简单,可以使用搜索解决的简单 01 规划问题。

我们定义两种价值(下称金钱和精力)。你初始具有 0 的金钱和 w 单位的精力。

有 n 个物品,第 i 个物品具有一个字符串表示的名字,并可以提供 u[i] 单位的金钱和 v[i] 单位的精力( 都可以是负的,详见数据范围),对于每个物品你有两种选择:选取或丢弃,且不能选取多次。

你的任务是给出一种选择方案,使得选择结束以后,你拥有的精力非负且金钱尽可能大。

输入格式
第一行两个正整数 n,w ,含义如题。

接下来 n 行,第 i 行具有一个字符串 s[i] 和两个正整数 u[i],v[i],表示一个物品的唯一名字和能提供的两种价值的量。

输出格式
第一行一个非负整数,表示最大能获得的金钱的量。

接下来若干行字符串,输出你选择的每个物品的名字,有多种方案的话,请输出任意一种。

样例
输入
4 100
wonder -50 -50
miracle -50 10
dream 100 -55
responsibility 230 -55
输出
280
miracle
dream
responsibility