题目描述
题目译自 Open Olympiad in Informatics 2022 Day2 T2 「Целостный массив / Integral Array」。
给定一个包含 n 个正整数的数组 a,元素编号从 1 到 n。如果对于数组中任意两个(不一定不同)的数字 x 和 y,当 x≥y 时,⌊yx⌋(x 除以 y 的商,向下取整)也在该数组中,则称该数组为完整数组。
已知数组 a 中的所有数字均不超过 c。你的任务是检查给定数组是否为完整数组。
输入格式
每个测试点包含多组输入数据。第一行包含一个整数 t (1≤t≤10000),表示输入数据的组数。接下来是各组数据的描述。
每组数据的第一行包含两个整数 n 和 c (1≤n≤106,1≤c≤107),分别表示数组 a 的大小和数组中数字的上限。
第二行包含 n 个整数 a1,a2,…,an (1≤ai≤c),表示数组 a 的元素。
设 N 表示所有数据组中 n 的总和,C 表示所有数据组中 c 的总和。保证 N≤106 且 C≤107。
输出格式
对于每组输入数据,如果数组是完整的输出 Yes,否则输出 No。
3
3 5
1 2 5
4 10
1 3 3 7
1 2
2
Yes
No
No
在第一组输入数据中,可以看出数组是完整的:
- ⌊11⌋=1,a1=1,该数字在数组中;
- ⌊22⌋=1;
- ⌊55⌋=1;
- ⌊12⌋=2,a2=2,该数字在数组中;
- ⌊15⌋=5,a3=5,该数字在数组中;
- ⌊25⌋=2,a2=2,该数字在数组中。
因此,条件满足,数组是完整的。
在第二组输入数据中,可以注意到:
- $\left \lfloor \frac{7}{3} \right \rfloor = \left \lfloor 2\frac{1}{3} \right \rfloor = 2$,但 2 不在数组 a 中,因此数组不是完整的。
在第三组输入数据中:
- ⌊22⌋=1,但数组中只有数字 2,因此数组不是完整的。
数据范围与提示
详细子任务附加限制及分值如下表所示。其中子任务 0 是样例。
| 子任务 |
分值 |
附加限制 |
子任务依赖 |
备注 |
| 1 |
13 |
N≤100 |
0 |
|
| 2 |
17 |
N≤100000,C≤10000 |
0 |
| 3 |
15 |
N≤1000 |
0,1 |
| 4 |
27 |
N≤100000 |
0∼3 |
| 5 |
28 |
|
0∼4 |