CF1584C Two Arrays

题目描述

给定两个整数数组 $a_1, a_2, \ldots, a_n$ 和 $b_1, b_2, \ldots, b_n$。 我们定义对数组 $a$ 的一种变换方式如下: 1. 选择任意一个非负整数 $k$,满足 $0 \le k \le n$。 2. 选择 $k$ 个不同的数组下标 $1 \le i_1 < i_2 < \ldots < i_k \le n$。 3. 将 $a_{i_1}, a_{i_2}, \ldots, a_{i_k}$ 各自加 $1$,数组 $a$ 的其他元素保持不变。 4. 将数组 $a$ 的元素以任意顺序重新排列。 请判断是否存在某种对数组 $a$ 的变换方式(仅进行一次),使得变换后的数组恰好等于 $b$。

输入格式

第一行包含一个整数 $t$($1 \le t \le 100$),表示测试用例的数量。接下来是每个测试用例的描述。 每个测试用例的第一行包含一个整数 $n$($1 \le n \le 100$),表示数组 $a$ 和 $b$ 的长度。 第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($-100 \le a_i \le 100$)。 第三行包含 $n$ 个整数 $b_1, b_2, \ldots, b_n$($-100 \le b_i \le 100$)。

输出格式

对于每个测试用例,如果存在某种对数组 $a$ 的变换方式,使得变换后的数组等于 $b$,则输出 "YES"(不含引号);否则输出 "NO"(不含引号)。 你可以用任意大小写输出答案。

说明/提示

在第一个测试用例中,我们可以进行如下变换: - 选择 $k = 2$。 - 选择 $i_1 = 1$,$i_2 = 2$。 - 将 $a_1$ 和 $a_2$ 各加 $1$,得到的新数组为 $[0, 2, 0]$。 - 将第二个和第三个元素交换位置。 在第二个测试用例中,没有合适的变换方式。 在第三个测试用例中,选择 $k = 0$,且不改变元素顺序即可。 由 ChatGPT 4.1 翻译