308064: CF1461D. Divide and Summarize

Memory Limit:256 MB Time Limit:2 S
Judge Style:Text Compare Creator:
Submit:0 Solved:0

Description

Divide and Summarize

题意翻译

现给出一段长度为$n$的数列{$a_n$},其中$n<=10^5$,$1<=a_i<=10^6$。每次操作时求出当前序列的最大值$max$与最小值$min$,记$mid=(max+min)/2$向下取整,小于等于该值的数放在左子列,大于该值的数放在右子列,均按原有序列顺序放置。对于每次操作,可以选择其中一个序列而永久舍弃另外一个子列。 该题有多组数组,每组数据都有一个数列与$q$次询问($q<=10^5$),每次询问会给出一个整数$s_i$($1<=s_i<=10^9$),使得原序列经过若干次操作后整个序列和为$s_i$,如果可以输出Yes反之输出No。满足 $\sum n, \sum q \le 10^5$。

题目描述

Mike received an array $ a $ of length $ n $ as a birthday present and decided to test how pretty it is. An array would pass the $ i $ -th prettiness test if there is a way to get an array with a sum of elements totaling $ s_i $ , using some number (possibly zero) of slicing operations. ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1461D/bacc5f6e8a5007e7b78d11e0dd09c5d277e67ed2.png)An array slicing operation is conducted in the following way: - assume $ mid = \lfloor\frac{max(array) + min(array)}{2}\rfloor $ , where $ max $ and $ min $ — are functions that find the maximum and the minimum array elements. In other words, $ mid $ is the sum of the maximum and the minimum element of $ array $ divided by $ 2 $ rounded down. - Then the array is split into two parts $ \mathit{left} $ and $ right $ . The $ \mathit{left} $ array contains all elements which are less than or equal $ mid $ , and the $ right $ array contains all elements which are greater than $ mid $ . Elements in $ \mathit{left} $ and $ right $ keep their relative order from $ array $ . - During the third step we choose which of the $ \mathit{left} $ and $ right $ arrays we want to keep. The chosen array replaces the current one and the other is permanently discarded. You need to help Mike find out the results of $ q $ prettiness tests. Note that you test the prettiness of the array $ a $ , so you start each prettiness test with the primordial (initial) array $ a $ . Thus, the first slice (if required) is always performed on the array $ a $ .

输入输出格式

输入格式


Each test contains one or more test cases. The first line contains the number of test cases $ t $ ( $ 1 \le t \le 100 $ ). The first line of each test case contains two integers $ n $ and $ q $ $ (1 \le n, q \le 10^5) $ — the length of the array $ a $ and the total number of prettiness tests. The second line of each test case contains $ n $ integers $ a_1, a_2, ..., a_n $ $ (1 \le a_i \le 10^6) $ — the contents of the array $ a $ . Next $ q $ lines of each test case contain a single integer $ s_i $ $ (1 \le s_i \le 10^9) $ — the sum of elements which Mike wants to get in the $ i $ -th test. It is guaranteed that the sum of $ n $ and the sum of $ q $ does not exceed $ 10^5 $ ( $ \sum n, \sum q \le 10^5 $ ).

输出格式


Print $ q $ lines, each containing either a "Yes" if the corresponding prettiness test is passed and "No" in the opposite case.

输入输出样例

输入样例 #1

2
5 5
1 2 3 4 5
1
8
9
12
6
5 5
3 1 3 1 3
1
2
3
9
11

输出样例 #1

Yes
No
Yes
No
Yes
No
Yes
No
Yes
Yes

说明

Explanation of the first test case: 1. We can get an array with the sum $ s_1 = 1 $ in the following way: 1.1 $ a = [1, 2, 3, 4, 5] $ , $ mid = \frac{1+5}{2} = 3 $ , $ \mathit{left} = [1, 2, 3] $ , $ right = [4, 5] $ . We choose to keep the $ \mathit{left} $ array. 1.2 $ a = [1, 2, 3] $ , $ mid = \frac{1+3}{2} = 2 $ , $ \mathit{left} = [1, 2] $ , $ right = [3] $ . We choose to keep the $ \mathit{left} $ array. 1.3 $ a = [1, 2] $ , $ mid = \frac{1+2}{2} = 1 $ , $ \mathit{left} = [1] $ , $ right = [2] $ . We choose to keep the $ \mathit{left} $ array with the sum equalling $ 1 $ . 2. It can be demonstrated that an array with the sum $ s_2 = 8 $ is impossible to generate. 3. An array with the sum $ s_3 = 9 $ can be generated in the following way: 3.1 $ a = [1, 2, 3, 4, 5] $ , $ mid = \frac{1+5}{2} = 3 $ , $ \mathit{left} = [1, 2, 3] $ , $ right = [4, 5] $ . We choose to keep the $ right $ array with the sum equalling $ 9 $ . 4. It can be demonstrated that an array with the sum $ s_4 = 12 $ is impossible to generate. 5. We can get an array with the sum $ s_5 = 6 $ in the following way: 5.1 $ a = [1, 2, 3, 4, 5] $ , $ mid = \frac{1+5}{2} = 3 $ , $ \mathit{left} = [1, 2, 3] $ , $ right = [4, 5] $ . We choose to keep the $ \mathit{left} $ with the sum equalling $ 6 $ . Explanation of the second test case: 1. It can be demonstrated that an array with the sum $ s_1 = 1 $ is imposssible to generate. 2. We can get an array with the sum $ s_2 = 2 $ in the following way: 2.1 $ a = [3, 1, 3, 1, 3] $ , $ mid = \frac{1+3}{2} = 2 $ , $ \mathit{left} = [1, 1] $ , $ right = [3, 3, 3] $ . We choose to keep the $ \mathit{left} $ array with the sum equalling $ 2 $ . 3. It can be demonstrated that an array with the sum $ s_3 = 3 $ is imposssible to generate. 4. We can get an array with the sum $ s_4 = 9 $ in the following way: 4.1 $ a = [3, 1, 3, 1, 3] $ , $ mid = \frac{1+3}{2} = 2 $ , $ \mathit{left} = [1, 1] $ , $ right = [3, 3, 3] $ . We choose to keep the $ right $ array with the sum equalling $ 9 $ . 5. We can get an array with the sum $ s_5 = 11 $ with zero slicing operations, because array sum is equal to $ 11 $ .

Input

题意翻译

现给出一段长度为$n$的数列{$a_n$},其中$n<=10^5$,$1<=a_i<=10^6$。每次操作时求出当前序列的最大值$max$与最小值$min$,记$mid=(max+min)/2$向下取整,小于等于该值的数放在左子列,大于该值的数放在右子列,均按原有序列顺序放置。对于每次操作,可以选择其中一个序列而永久舍弃另外一个子列。 该题有多组数组,每组数据都有一个数列与$q$次询问($q<=10^5$),每次询问会给出一个整数$s_i$($1<=s_i<=10^9$),使得原序列经过若干次操作后整个序列和为$s_i$,如果可以输出Yes反之输出No。满足 $\sum n, \sum q \le 10^5$。

加入题单

上一题 下一题 算法标签: