#6987. 发运清单(cargo)
发运清单(cargo)
发运清单(cargo)
题目描述
一家物流公司正在整理一批即将发出的货物。
由于近期物流系统进行了升级,所有货物在正式发出之前,都必须完成一次编号核验。
仓库中共有 (n) 件货物,每件货物都具有一个唯一的正整数编号 。完成第 (i) 件货物的核验后,公司可以获得 点工作积分。
编号核验需要使用一种特殊的电子校验单元。
核验设备会从右向左,依次读取货物编号中的每一位数字。每读取一个数字 (d),设备就会消耗 (d) 个电子校验单元。
例如,核验编号为 3052 的货物时,设备依次读取:
2 → 5 → 0 → 3
四次读取分别消耗 2、5、0、3 个电子校验单元。
只有完整核验一件货物的全部数字,才能获得对应的工作积分。未完成的核验不会获得积分,也不会退还已经消耗的校验单元。
目前,仓库只剩下 (V) 个电子校验单元,且短时间内无法补充。
每件货物最多进行一次核验,工作人员可以自行决定核验哪些货物,以及核验顺序,也可以放弃部分货物。
请你帮助仓库管理员制定一份核验计划,使最终获得的工作积分尽可能多。
输入格式
第一行包含两个正整数 (n,V),分别表示货物数量和剩余电子校验单元的数量。
接下来 (n) 行,每行包含两个正整数 (a_i,v_i),表示第 (i) 件货物的编号,以及完成核验后能够获得的工作积分。
输出格式
输出一个整数,表示在现有校验单元数量限制下,最多能够获得的工作积分。
输入输出样例 #1
输入
4 10
29 20
41 8
123 9
40 7
输出
16
样例解释
仓库共有 4 件货物,剩余 10 个电子校验单元。
编号为 29 的货物需要消耗 11 个校验单元,无法完成核验。
可以选择核验编号为 123 和 40 的两件货物:
- 核验
123消耗 6 个校验单元,获得 9 点积分。 - 核验
40消耗 4 个校验单元,获得 7 点积分。
总共消耗 10 个校验单元,获得 16 点工作积分。
可以证明,不存在获得更多工作积分的合法核验方案。
数据范围
对于所有测试数据,保证:
提示
核验设备处理的是编号中的十进制数字,而不是编号本身对应的整数大小。
| 测试点编号 | 层级 | n |
V |
数据特征 | 标准输出 | 设计目的 |
|---|---|---|---|---|---|---|
| 1 | 弱数据 | 1 | 1 | 单件物品恰好装入 | 5 | 检查最小规模与基础转移 |
| 2 | 10 | 单个物品,容量远大于重量 | 7 | 检查物品不能重复选择 | ||
| 3 | 4 | 2 | 所有物品的数位和均超过容量 | 0 | 检查无物品可选 | |
| 4 | 基础数据 | 5 | 10 | 大整数可能具有很小的数位和 | 25 | 检查重量取决于数位和而非整数大小 |
| 5 | 正常数据 | 6 | 12 | 不同整数的数位和均为 4 | 46 | 检查同重量物品的价值取舍 |
| 6 | 4 | 10 | 最优方案只使用 8 单位容量 | 22 | 检查容量不要求恰好用满 | |
| 7 | 边界数据 | 5 | 0 | 容量为 0,所有编号均为正整数 | 0 | 检查 V=0 边界 |
| 8 | 较强数据 | 8 | 35 | 多种位数、数位和与价值混合 | 64 | 检查组合最优并卡简单贪心 |
| 9 | 边界数据 | 6 | 100 | 包含接近 int 上界的编号,最大数位和为 82 |
105 | 检查大整数数位和与容量边界 |
| 10 | 极限数据 | 100 | 2000 | 每件重量为 81、价值为 10⁹ |
24000000000 | 检查最大规模、0/1 限制及 long long |