P13546 [OOI 2022] Integral Array
题目背景
CF1648B
题目描述
给定一个长度为 $n$ 的正整数数组 $a$,编号从 $1$ 到 $n$。我们称一个数组为**整性数组**,如果对于数组中任意两个(可以相同)数 $x$ 和 $y$,且 $x \ge y$,都有 $\left\lfloor \frac{x}{y} \right\rfloor$(即 $x$ 整除 $y$ 的向下取整)也在数组中。
保证所有 $a$ 中的数都不超过 $c$。你的任务是判断给定的数组是否为整性数组。
输入格式
输入包含多组测试数据。第一行包含一个整数 $t$($1 \le t \le 10^4$),表示测试数据组数。接下来是每组测试数据的描述。
每组测试数据的第一行包含两个整数 $n$ 和 $c$($1 \le n \le 10^6$,$1 \le c \le 10^7$),分别表示数组大小和数组元素的最大值。
第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($1 \le a_i \le c$),表示数组 $a$。
记 $N$ 为所有测试数据中 $n$ 的总和,$C$ 为所有测试数据中 $c$ 的总和。保证 $N \le 10^6$ 且 $C \le 10^7$。
输出格式
对于每组测试数据,若数组是整性数组,输出 `Yes`,否则输出 `No`。
说明/提示
### 说明
在第一个测试样例中,可以验证数组是整性的:
- $\left\lfloor \frac{1}{1} \right\rfloor = 1$,$a_1 = 1$,该数在数组中
- $\left\lfloor \frac{2}{2} \right\rfloor = 1$
- $\left\lfloor \frac{5}{5} \right\rfloor = 1$
- $\left\lfloor \frac{2}{1} \right\rfloor = 2$,$a_2 = 2$,该数在数组中
- $\left\lfloor \frac{5}{1} \right\rfloor = 5$,$a_3 = 5$,该数在数组中
- $\left\lfloor \frac{5}{2} \right\rfloor = 2$,$a_2 = 2$,该数在数组中
因此该数组满足条件,是整性数组。
在第二个测试样例中,$\left\lfloor \frac{7}{3} \right\rfloor = 2$,但 $2$ 不在 $a$ 中,因此不是整性数组。
在第三个测试样例中,$\left\lfloor \frac{2}{2} \right\rfloor = 1$,但数组中只有 $2$,没有 $1$,因此不是整性数组。
### 评分说明
本题测试数据分为 7 组。只有通过某组全部测试点,且通过所有必需的前置组,才能获得该组分数。
| 组别 | 分值 | $N$ | $C$ | 必须通过的组 | 备注 |
|:----:|:----:|:---:|:---:|:------------:|:----:|
| 0 | 0 | -- | -- | -- | -- | 样例测试点 |
| 1 | 13 | $N \le 100$ | -- | 0 | | |
| 2 | 17 | $N \le 100\,000$ | $C \le 10\,000$ | 0 | |
| 3 | 15 | $N \le 1000$ | -- | 0, 1 | | |
| 4 | 27 | $N \le 100\,000$ | -- | 0--3 | | |
| 5 | 28 | -- | -- | 0--4 | | |