#P0601. 完整数列

完整数列

题目描述

给定一个长度为 nn 的数列 aa。我们称这个数列是一个 完整数列 当且仅当这个数列满足如下条件:

如果数列中存在数值为 xx 的元素,同时数列中存在数值为 yy 的元素(这两个元素可以为同一个元素)且 xyx \ge y,则数列中必然存在数值为 xy\left \lfloor \frac{x}{y} \right \rfloor 的元素。

也就是说,你先从数列中任意选择一个元素,再从数列中任意选择一个元素(两次选的可以是同一个元素)且较大的那个元素的数值为 xx,另一个元素的数值为 yyxyx \ge y),数值为 xy\left \lfloor \frac{x}{y} \right \rfloor 的元素也存在在数列中。\Rightarrow 如果满足这个条件,则该数列是一个完整数列。

或者说,对于这个长度为 nn 的数列 aa,如果对于任意 1in,1jn1 \le i \le n, 1 \le j \le n(其中 ii 可以等于 jj)均满足:数列 aa 中存在数值为 max(ai,aj)min(ai,aj)\left \lfloor \frac{ \max(a_i, a_j) }{ \min(a_i, a_j) } \right \rfloor 的元素,则数列 aa 是一个完整数列。

(注:其实以上三段话的表示的意思是一样的,写三段主要是便于同学们理解题意)

本题中你需要做的就是判断给定的数列 aa 是否是一个完整数列。

输入格式

输入包含多组测试数据。

输入的第一行包含一个整数 t(1t104)t(1 \le t \le 10^4),表示测试数据组数。

接下来每组测试数据包含两行。其中:

第一行包含两个整数 nncc1n,c1061 \le n, c \le 10^6),这里 nn 表示数列 aa 的长度,cc 表示值域范围(也就是说数列 aa 中的每个数都不会超过 cc)。

第二行包含 nn 个整数 a1,a2,,an(1aic)a_1, a_2, \ldots, a_n(1 \le a_i \le c)

数据保证所有测试数据的 nn 之和不超过 10610^6,同时所有测试数据的 cc 之和也不超过 10610^6

输出格式

对于每组测试数据,输出一行。

如果这组测试数据对应的数列 aa 是一个完整数列,输出一行 Yes;否则,输出一行 No

样例

4
3 5
1 2 5
4 10
1 3 3 7
1 2
2
1 1
1
Yes
No
No
Yes
2
10 10
1 2 3 4 5 6 7 8 9 10
10 100
1 2 3 5 15 20 25 38 44 50
Yes
No

说明/提示

样例解释

11 组测试数据:

  • 11=1\lfloor \frac{1}{1} \rfloor = 1a1=1a_1 = 1,有出现在数列 aa 中;
  • 22=1\lfloor \frac{2}{2} \rfloor = 1
  • 55=1\lfloor \frac{5}{5} \rfloor = 1
  • 21=2\lfloor \frac{2}{1} \rfloor = 2a2=2a_2 = 2,有出现在数列 aa 中;
  • 51=5\lfloor \frac{5}{1} \rfloor = 5a3=5a_3 = 5,有出现在数列 aa 中;
  • 52=2\lfloor \frac{5}{2} \rfloor = 2a2=2a_2 = 2,有出现在数列 aa 中。

所以数列 aa 是完整数列。

22 组测试数据:

73=213=2\left \lfloor \frac{7}{3} \right \rfloor = \left \lfloor 2\frac{1}{3} \right \rfloor = 2,但是数列 aa 中不存在数值为 22 的元素,所以数列 aa 不是完整数列。

33 组测试数据:

22=1\left \lfloor \frac{2}{2} \right \rfloor = 1,但是数列中只有数值为 22 的元素,所以数列 aa 不是完整数列。

数据规模与约定

  • 对于 50%50\% 的数据,t10;n,c100t \le 10; n,c \le 100
  • 对于 100%100\% 的数据,1t104;1n,c1061 \le t \le 10^4; 1 \le n,c \le 10^6,所有测试数据的 nn 之和不超过 10610^6,同时所有测试数据的 cc 之和也不超过 10610^6