CF1003D Coins and Queries
题目描述
Polycarp 有 $ n $ 枚硬币,第 $ i $ 枚硬币的面值为 $ a_i $ 。保证所有面值都是 $ 2 $ 的整数次幂(即 $ a_i = 2^d $,其中 $ d $ 为非负整数)。
Polycarp 需要回答 $ q $ 个查询。第 $ j $ 个查询由整数 $ b_j $ 描述。查询的答案是:使用硬币子集凑出总值 $ b_j $ 所需的最少硬币数量(Polycarp 只能使用他拥有的硬币)。若无法凑出 $ b_j $,则该查询的答案为 `-1`。
所有查询相互独立(查询结果不影响硬币状态)。
输入格式
输入第一行包含两个整数 $ n $ 和 $ q $($ 1 \le n, q \le 2 \cdot 10^5 $)——硬币数量和查询数量。
输入第二行包含 $ n $ 个整数 $ a_1, a_2, \dots, a_n $ ——硬币面值($ 1 \le a_i \le 2 \cdot 10^9 $)。保证所有 $ a_i $ 均为 $ 2 $ 的整数次幂(即 $ a_i = 2^d $,$ d $ 为非负整数)。
接下来 $ q $ 行,每行一个整数。第 $ j $ 行包含整数 $ b_j $ ——第 $ j $ 个查询的值($ 1 \le b_j \le 10^9 $)。
输出格式
输出 $ q $ 个整数 $ ans_j $。第 $ j $ 个整数表示第 $ j $ 个查询的答案。若无法凑出 $ b_j $,则输出 `-1`。
说明/提示
### 样例解释
可以知道,一共有 $5$ 个硬币,分别为 $2, 4, 8, 2, 4$。
对于询问一:选择第 $3$ 个硬币即可,很显然没有比这更优的选择方案,所以答案为 $1$。
对于询问二:无论如何选择都无法凑出 $5$,所以输出 `-1`。
对于询问三:选择 ${2, 4, 8}$ 这三个硬币即可,但是无论如何选择都不能比这更优,所以答案为 $3$。
对于询问四:同理可得答案为 $2$。
---
由 Deepseek-R1 完成翻译,由 [1277793](https://www.luogu.com.cn/user/1277793) 添加样例解释。