编程题
### 问题描述 小然正在玩一个有趣的数字游戏。他有一个长度为 $2 \cdot N$ 的数组 $A$。 他还有一个空的数组 $B$。他需要进行 $N$ 次操作,每次操作如下: - 选择数组 $A$ 中的两个不同的索引 $x$ 和 $y$($1 \leq x, y \leq |A|$); - 将 $A_x - A_y$ 增加到数组 $B$ 的末尾; - 从数组 $A$ 中删除第 $x$ 个和第 $y$ 个元素,并且将剩余的元素按原来的顺序连接起来。 他的目标是找到一种操作方式,使得在所有操作完成后,数组 $B$ 中没有两个连续的元素是相同的。 ### 输入格式 输入的第一行包含一个整数 $T$,表示测试用例的数量。 每个测试用例由两行组成: - 第一行包含一个整数 $N$; - 第二行包含 $2 \cdot N$ 个空格分隔的整数 $A_1, A_2, ..., A_{2N}$,表示数组 $A$ 的元素。 ### 输出格式 对于每个测试用例,如果存在一种操作方式使得所有操作完成后,数组 $B$ 中没有两个连续的元素是相同的,则输出 "YES",否则输出 "NO"。 ### 样例输入 ```text 3 2 1 1 1 1 3 1 1 2 2 3 3 2 1 1 2 2 ``` ### 样例输出 ```text NO YES YES ``` ### 说明 在第二个测试用例中,我们可以进行以下操作: - 在第一次操作中,选择索引 $x = 2$ 和 $y = 3$。将 $A_2 - A_3 = 1 - 2 = -1$ 添加到数组 $B$ 的末尾,并从数组 $A$ 中删除第 2 个和第 3 个元素。现在,数组 $A$ 是 $[1, 2, 3, 3]$。 - 在第二次操作中,选择索引 $x = 2$ 和 $y = 1$。将 $A_2 - A_1 = 2 - 1 = 1$ 添加到数组 $B$ 的末尾,并从数组 $A$ 中删除第 2 个和第 1 个元素。现在,数组 $A$ 是 $[3, 3]$,数组 $B$ 是 $[-1, 1]$。 - 在第三次操作中,选择索引 $x = 1$ 和 $y = 2$。将 $A_1 - A_2 = 3 - 3 = 0$ 添加到数组 $B$ 的末尾,并从数组 $A$ 中删除第 1 个和第 2 个元素。现在,数组 $A$ 是空的,数组 $B$ 是 $[-1, 1, 0]$。 ### 评测数据范围 $1 \leq T \leq 10^3$。 $2 \leq N \leq 10^3$。 $1 \leq A_i \leq N$。 所有测试用例中 $N$ 的总和不超过 $5 \times 10^3$。
查看答案
赣ICP备20007335号-2