问题 5527 --能否得到数组b?

5527: 能否得到数组b?★★

时间限制: 1 Sec  内存限制: 128 MB
提交: 225  解决: 105
[提交][状态][命题人:]

题目描述

给定两个长度为n的整数数组aa1,a2…anbb1,b2bn。对数组a执行以下变换:

1)选择一个任意非负整数k0≤k≤n)。

2)选择k个不同的数组下标1≤i1<i2<i3<……<ik≤n;(提示,下标可以不连续)。

3)对ai1ai2aik各加1,数组a的所有其他元素保持不变。

4)将数组a的元素按任意顺序排列。

请问,是否可以只对数组a执行一次变换,使变换之后的数组恰好等于b?

输入

第一行一个整数t (1≤t≤100):测试用例数;

每个测试用例共三行:

第一行一个整数n (1≤n≤100):数组a和数组b的长度;

第二行共n个整数,依次为a1,a2…an的值 (100ai100)

第三行共n个整数,依次为b1,b2bn的值(100bi100)

输出

t行,每个测试用例输出一行。

对于每个测试用例,如果可以经过一次变换将数组a转换为数组b,则输出“YES”(不带引号),否则输出“NO”(不带引号)
样例输入
Copy
3
3
-1 1 0
0 0 2
1
0
2
5
1 2 3 4 5
1 2 3 4 5
样例输出
Copy
YES
NO
YES

提示

对于第一个测试用例,

(1)     选择k=2

(2)     选择i1=1, i2=2

(3)     a1a2这两个元素各加1[-1, 1, 0] =>[0, 2, 0]

(4)     交换a2a3,得到新的数组[0,0,2],和数组b相等。

对于第二个测试用例,我们无法完成变换。

对于第三个测试用例,数组a与数组b已经相等,这时可以选择k=0

来源

[提交][状态]