#P13546. [OOI 2022] Integral Array

[OOI 2022] Integral Array

背景

CF1648B

题目描述

给定一个长度为 nn 的正整数数组 aa,编号从 11 到 nn。我们称一个数组为整性数组,如果对于数组中任意两个(可以相同)数 xx 和 yy,且 x≥yx \ge y,都有 ⌊xy⌋\left\lfloor \frac{x}{y} \right\rfloor(即 xx 整除 yy 的向下取整)也在数组中。

保证所有 aa 中的数都不超过 cc。你的任务是判断给定的数组是否为整性数组。

输入格式

输入包含多组测试数据。第一行包含一个整数 tt(1≤t≤1041 \le t \le 10^4),表示测试数据组数。接下来是每组测试数据的描述。

每组测试数据的第一行包含两个整数 nn 和 cc(1≤n≤1061 \le n \le 10^6,1≤c≤1071 \le c \le 10^7),分别表示数组大小和数组元素的最大值。

第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \ldots, a_n(1≤ai≤c1 \le a_i \le c),表示数组 aa。

记 NN 为所有测试数据中 nn 的总和,CC 为所有测试数据中 cc 的总和。保证 N≤106N \le 10^6 且 C≤107C \le 10^7。

输出格式

对于每组测试数据,若数组是整性数组,输出 Yes,否则输出 No。

3
3 5
1 2 5
4 10
1 3 3 7
1 2
2
Yes
No
No

提示

说明

在第一个测试样例中,可以验证数组是整性的:

  • ⌊11⌋=1\left\lfloor \frac{1}{1} \right\rfloor = 1,a1=1a_1 = 1,该数在数组中
  • ⌊22⌋=1\left\lfloor \frac{2}{2} \right\rfloor = 1
  • ⌊55⌋=1\left\lfloor \frac{5}{5} \right\rfloor = 1
  • ⌊21⌋=2\left\lfloor \frac{2}{1} \right\rfloor = 2,a2=2a_2 = 2,该数在数组中
  • ⌊51⌋=5\left\lfloor \frac{5}{1} \right\rfloor = 5,a3=5a_3 = 5,该数在数组中
  • ⌊52⌋=2\left\lfloor \frac{5}{2} \right\rfloor = 2,a2=2a_2 = 2,该数在数组中

因此该数组满足条件,是整性数组。

在第二个测试样例中,⌊73⌋=2\left\lfloor \frac{7}{3} \right\rfloor = 2,但 22 不在 aa 中,因此不是整性数组。

在第三个测试样例中,⌊22⌋=1\left\lfloor \frac{2}{2} \right\rfloor = 1,但数组中只有 22,没有 11,因此不是整性数组。

评分说明

本题测试数据分为 7 组。只有通过某组全部测试点,且通过所有必需的前置组,才能获得该组分数。

组别 分值 NN CC 必须通过的组 备注
0 -- -- --
1 13 N≤100N \le 100 0
2 17 N≤100 000N \le 100\,000 C≤10 000C \le 10\,000
3 15 N≤1000N \le 1000 -- 0, 1
4 27 N≤100 000N \le 100\,000 0--3
5 28 -- 0--4