#L3776. 「BalticOI 2022 Day1」Uplifting Excursion
「BalticOI 2022 Day1」Uplifting Excursion
题目描述
题目译自 BalticOI Day1「Uplifting Excursion」
有 种物品,重量分别为 。重量为 的物品有 个。
你需要拿走若干物品,使得这些物品重量之和恰好为 。在此基础上,你需要拿尽可能多的物品。
问在物品重量之和恰好为 的基础上,你最多能拿多少物品。
输入格式
第一行两个数 。
第二行 个数,分别为 。
输出格式
一行一个数表示答案。若不存在方案,输出 impossible
。
样例 1
输入
2 5
2 3 1 1 4
输出
9
一种方案是分别取 个,重量之和为 。总共取了 个物品。
样例 2
输入
3 5
3 1 0 2 0 0 2
输出
impossible
可以证明不存在方案使得重量之和为 。
样例 3
输入
1 5
0 0 6
输出
5
数据范围与提示
- 子任务 ( 分):
- 子任务 ( 分):
- 子任务 ( 分):
- 子任务 ( 分):
- 子任务 ( 分):
- 子任务 ( 分):没有特殊限制
对于子任务 到子任务 ,如果通过 的测试点,可以获得一半的得分。
对于所有数据,满足:
这个题目是一个带约束的子集和问题的变种,需要在重量和恰好为 的前提下最大化物品数量。由于 最大为 ,总物品种类为 ,但 的范围极大(到 ),需要特殊的算法设计。