给定两个长度为n的整数数组a:a1,a2,…an和b:b1,b2,…,bn。对数组a执行以下变换:
(1)选择一个任意非负整数k(0≤k≤n)。
(2)选择k个不同的数组下标1≤i1<i2<i3<……<ik≤n;(提示,下标可以不连续)。
(3)对ai1、ai2、…、aik各加1,数组a的所有其他元素保持不变。
(4)将数组a的元素按任意顺序排列。
请问,是否可以只对数组a执行一次变换,使变换之后的数组恰好等于b?给定两个长度为n的整数数组a:a1,a2,…an和b:b1,b2,…,bn。对数组a执行以下变换:
(1)选择一个任意非负整数k(0≤k≤n)。
(2)选择k个不同的数组下标1≤i1<i2<i3<……<ik≤n;(提示,下标可以不连续)。
(3)对ai1、ai2、…、aik各加1,数组a的所有其他元素保持不变。
(4)将数组a的元素按任意顺序排列。
请问,是否可以只对数组a执行一次变换,使变换之后的数组恰好等于b?第一行一个整数t (1≤t≤100):测试用例数;
每个测试用例共三行:
第一行一个整数n (1≤n≤100):数组a和数组b的长度;
第二行共n个整数,依次为a1,a2,…an的值 (−100≤ai≤100);
第三行共n个整数,依次为b1,b2,…,bn的值(−100≤bi≤100)。
共t行,每个测试用例输出一行。
对于每个测试用例,如果可以经过一次变换将数组a转换为数组b,则输出“YES”(不带引号),否则输出“NO”(不带引号)。3 3 -1 1 0 0 0 2 1 0 2 5 1 2 3 4 5 1 2 3 4 5
YES NO YES
对于第一个测试用例,
(1) 选择k=2,
(2) 选择i1=1, i2=2
(3) 对a1和a2这两个元素各加1,[-1, 1, 0] =>[0, 2, 0]
(4) 交换a2和a3,得到新的数组[0,0,2],和数组b相等。
对于第二个测试用例,我们无法完成变换。
对于第三个测试用例,数组a与数组b已经相等,这时可以选择k=0;