这题本质上就是经典的“田忌赛马”模型。
已知敌军出战顺序固定为数组 b,而我军可以任意安排数组 a 的出战顺序。每一轮中,只有当我军战力 严格大于 对方时才算赢,否则都算输。因此问题可以转化为:
能否通过重新排列 a,使得我军获胜场数 > 2n。
由于 n 是奇数,所以只要我军最多能赢的场数大于 2n,答案就是 YES,否则就是 NO。
在网易旗舰级武侠游戏《逆水寒》的“宋辽边境”战场玩法中,宋辽两军正隔河对峙。
辽军统帅为了挫败我方士气,摆下了“连环阵”:他们派出了n 支精锐的先锋小队,并公开了这n 支小队出战的先后顺序以及每一支小队的“战力值”。
作为宋军的战术指挥官,你手下同样拥有n 支蓄势待发的铁骑小队,每支小队的“战力值”你也了如指掌。根据战场规则,两军将进行n 轮一对一的“阵前对决”:
战国时,齐威王与田忌赛马的故事广为人知,你也想成为如田忌一般的智将,带领你麾下的将士赢得胜利。请判断,是否存在一种排兵布阵的策略,使得我军最终的胜场数严格大于辽军的胜场数?
每个测试文件均包含多组测试数据。第一行输入一个整数T (1<T≤2×105) 表示演练的数据组数。每组测试数据描述如下:
第一行一个整数n (1≤n≤105,n 为奇数),表示双方派出的小队数量。
第二行包含n 个整数a1,a2,…,an (1≤ai≤109),表示我军(宋军)每支小队的战力值。
第三行包含n 个整数b1,b2,…,bn (1≤bi≤109),表示敌军(辽军)的出战顺序及其战力值。
保证所有测试中n 的总和不超过2×105。
输出T 行。对每组数据,若通过合理排兵布阵能使得我军 胜场数> 败场数,输出YES;否则输出NO。
输入
2
5
2 5 7 1 6
3 5 6 2 7
3
3 3 3
3 3 3
输出
YES
NO
说明
对于第一组测试数据,一种最佳出兵顺序如下: