CF1461D Divide and Summarize

题目描述

Mike 收到一个长度为 $n$ 的数组 $a$ 作为生日礼物,他决定测试这个数组有多“漂亮”。 如果存在一种方式,经过若干次(可以为零次)切分操作后,能够得到一个元素和为 $s_i$ 的数组,则该数组通过第 $i$ 次漂亮性测试。 数组切分操作的定义如下: - 设 $mid = \left\lfloor\frac{\max(array) + \min(array)}{2}\right\rfloor$,其中 $\max$ 和 $\min$ 分别表示数组中的最大值和最小值。也就是说,$mid$ 是最大值与最小值之和除以 $2$ 并向下取整。 - 然后将数组分为两部分 $\mathit{left}$ 和 $\mathit{right}$。$\mathit{left}$ 包含所有小于等于 $mid$ 的元素,$\mathit{right}$ 包含所有大于 $mid$ 的元素。$\mathit{left}$ 和 $\mathit{right}$ 中的元素顺序与原数组保持一致。 - 第三步,选择保留 $\mathit{left}$ 或 $\mathit{right}$ 中的一个数组,丢弃另一个。被选中的数组替换当前数组,未被选中的数组永久丢弃。 你需要帮助 Mike 判断 $q$ 次漂亮性测试的结果。 注意,每次漂亮性测试都是针对原始数组 $a$ 进行的,因此每次测试都从初始数组 $a$ 开始。也就是说,第一次切分(如果需要)总是在数组 $a$ 上进行。

输入格式

每个测试包含一个或多个测试用例。第一行包含测试用例数 $t$($1 \le t \le 100$)。 每个测试用例的第一行包含两个整数 $n$ 和 $q$($1 \le n, q \le 10^5$),分别表示数组 $a$ 的长度和漂亮性测试的次数。 每个测试用例的第二行包含 $n$ 个整数 $a_1, a_2, ..., a_n$($1 \le a_i \le 10^6$),表示数组 $a$ 的内容。 接下来的 $q$ 行,每行包含一个整数 $s_i$($1 \le s_i \le 10^9$),表示 Mike 希望在第 $i$ 次测试中得到的元素和。 保证所有测试用例中 $n$ 的总和与 $q$ 的总和不超过 $10^5$($\sum n, \sum q \le 10^5$)。

输出格式

输出 $q$ 行,每行输出一次漂亮性测试的结果。如果通过测试,输出 "Yes";否则输出 "No"。

说明/提示

第一个测试用例的解释: 1. 可以通过如下方式得到元素和为 $s_1 = 1$ 的数组: 1.1 $a = [1, 2, 3, 4, 5]$,$mid = \frac{1+5}{2} = 3$,$\mathit{left} = [1, 2, 3]$,$\mathit{right} = [4, 5]$。选择保留 $\mathit{left}$。 1.2 $a = [1, 2, 3]$,$mid = \frac{1+3}{2} = 2$,$\mathit{left} = [1, 2]$,$\mathit{right} = [3]$。选择保留 $\mathit{left}$。 1.3 $a = [1, 2]$,$mid = \frac{1+2}{2} = 1$,$\mathit{left} = [1]$,$\mathit{right} = [2]$。选择保留 $\mathit{left}$,此时和为 $1$。 2. 可以证明无法得到元素和为 $s_2 = 8$ 的数组。 3. 可以通过如下方式得到元素和为 $s_3 = 9$ 的数组: 3.1 $a = [1, 2, 3, 4, 5]$,$mid = \frac{1+5}{2} = 3$,$\mathit{left} = [1, 2, 3]$,$\mathit{right} = [4, 5]$。选择保留 $\mathit{right}$,此时和为 $9$。 4. 可以证明无法得到元素和为 $s_4 = 12$ 的数组。 5. 可以通过如下方式得到元素和为 $s_5 = 6$ 的数组: 5.1 $a = [1, 2, 3, 4, 5]$,$mid = \frac{1+5}{2} = 3$,$\mathit{left} = [1, 2, 3]$,$\mathit{right} = [4, 5]$。选择保留 $\mathit{left}$,此时和为 $6$。 第二个测试用例的解释: 1. 可以证明无法得到元素和为 $s_1 = 1$ 的数组。 2. 可以通过如下方式得到元素和为 $s_2 = 2$ 的数组: 2.1 $a = [3, 1, 3, 1, 3]$,$mid = \frac{1+3}{2} = 2$,$\mathit{left} = [1, 1]$,$\mathit{right} = [3, 3, 3]$。选择保留 $\mathit{left}$,此时和为 $2$。 3. 可以证明无法得到元素和为 $s_3 = 3$ 的数组。 4. 可以通过如下方式得到元素和为 $s_4 = 9$ 的数组: 4.1 $a = [3, 1, 3, 1, 3]$,$mid = \frac{1+3}{2} = 2$,$\mathit{left} = [1, 1]$,$\mathit{right} = [3, 3, 3]$。选择保留 $\mathit{right}$,此时和为 $9$。 5. 元素和为 $s_5 = 11$ 可以不经过任何切分操作直接得到,因为数组的总和就是 $11$。 由 ChatGPT 4.1 翻译