#6977. 仓库密令(secret)

仓库密令(secret)

仓库密令(secret)

题目描述

某物资中心使用数字编号管理货物。

仓库中共有 (n) 种物资,第 (i) 种物资有一个正整数编号 (ai)(a_i),重量为 (wi)(w_i),价值为 (vi)(v_i)。

仓库按照编号的十进制数字位数决定库存数量:

  • 如果编号的十进制位数为奇数,这种物资库存充足,可以选择任意非负整数件。
  • 如果编号的十进制位数为偶数,这种物资只有一件,最多只能选择一次。

例如,编号 7 有 1 位数字,编号 35 有 2 位数字,编号 205 有 3 位数字。

现在有一个最大承重为 (V) 的运输箱。

求运输箱能够获得的最大总价值。

输入格式

第一行包含两个整数 (n,V)。

接下来 (n) 行,每行包含三个整数:

a w v

分别表示物资编号、重量和价值。

输出格式

输出最大总价值。

输入输出样例 #1

输入

3 10
13 4 9
205 3 5
7 5 8

输出

19

样例解释

编号 13 有 2 位数字,所以最多选择一次。

编号 205 和 7 分别有 3 位和 1 位数字,因此可以重复选择。

一种最优方案是选择:

  • 一件编号为 13 的物资;
  • 两件编号为 205 的物资。

总重量为 (4+3+3=10),总价值为 (9+5+5=19)。

数据范围

  • (1≤n≤100)(1\le n\le100)
  • (1≤V≤2000)(1\le V\le2000)
  • (1≤ai≤109)(1\le a_i\le10^9)
  • (1≤wi≤2000)(1\le w_i\le2000)
  • (1≤vi≤10000)(1\le v_i\le10000)
测试点编号 层级 n V 数据特征 标准输出 设计目的
1 弱数据 1 1 a=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 包含三个 a=0 的零重量物品 23 检查 digitSum(0)=0 和 V=0
8 较强数据 8 35 多种位数、数位和与价值混合 64 检查组合最优并卡简单贪心
9 边界数据 6 100 包含接近 int 上界的整数,最大数位和为 82 105 检查大整数数位和计算及容量边界
10 极限数据 100 2000 每件重量为 81、价值为 10⁹ 24000000000 检查最大规模、0/1 限制及 long long 累加