CF1624C.Division by Two and Permutation

传统题 时间 2000 ms 内存 256 MiB 5 尝试 1 已通过 1 标签

Division by Two and Permutation

题目描述

给定一个由 nn 个正整数组成的数组 aa。你可以对其进行如下操作:

每次操作可以将数组中的任意一个元素 aia_i 替换为 ai2\lfloor \frac{a_i}{2} \rfloor,即将 aia_i 除以 22 后向下取整。

请判断你是否可以通过若干次(可以为 00 次)操作,使得数组 aa 变成 11nn 的一个排列——也就是说,数组中恰好包含 11nn 的所有整数,每个只出现一次。

例如,如果 a=[1,8,25,2]a = [1, 8, 25, 2]n=4n = 4,那么答案是 YES。你可以这样操作:

  1. 88 替换为 82=4\lfloor \frac{8}{2} \rfloor = 4,此时 a=[1,4,25,2]a = [1, 4, 25, 2]
  2. 2525 替换为 252=12\lfloor \frac{25}{2} \rfloor = 12,此时 a=[1,4,12,2]a = [1, 4, 12, 2]
  3. 1212 替换为 122=6\lfloor \frac{12}{2} \rfloor = 6,此时 a=[1,4,6,2]a = [1, 4, 6, 2]
  4. 66 替换为 62=3\lfloor \frac{6}{2} \rfloor = 3,此时 a=[1,4,3,2]a = [1, 4, 3, 2]

输入格式

输入的第一行包含一个整数 tt1t1041 \le t \le 10^4),表示测试用例的数量。

每个测试用例包含两行。第一行包含一个整数 nn1n501 \le n \le 50),第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n1ai1091 \le a_i \le 10^9)。

输出格式

对于每个测试用例,输出一行:

  • 如果可以将数组 aa 变为 11nn 的一个排列,输出 YES;
  • 否则输出 NO。

YES 和 NO 不区分大小写(例如 yEs, yes, Yes 和 YES 都被认为是肯定回答)。

说明/提示

第一个测试用例的解释见题目描述。

第二个测试用例无法得到一个排列。

由 ChatGPT 4.1 翻译

样例

6
4
1 8 25 2
2
1 1
9
9 8 3 4 2 7 1 5 6
3
8 2 1
4
24 7 16 7
5
22 6 22 4 22
YES
NO
YES
NO
NO
YES

在线编程 IDE

建议全屏模式获得最佳体验