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 翻译