You are given two arrays a and b each consisting of n integers. All elements of a are pairwise distinct. Find the number of ways to reorder a such that ai>bi for all 1≤i≤n , modulo 109+7 . Two ways of reordering are considered different if the resulting arrays are different. Input Each test contains multiple test cases. The first line contains the number of test cases t (1≤t≤104 ). The description of the test cases follows. The first line of each test case contains a single integer n (2≤n≤2⋅105 ) — the length of the array a and b . The second line of each test case contains n distinct integers a1 , a2 , … , an (1≤ai≤109 ) — the array a . It is guaranteed that all elements of a are pairwise distinct. The second line of each test case contains n integers b1 , b2 , … , bn (1≤bi≤109 ) — the array b . It is guaranteed that the sum of n over all test cases does not exceed 2⋅105 . Output For each test case, output the number of ways to reorder array a such that ai>bi for all 1≤i≤n , modulo 109+7 .
时间: 2023-06-17 21:08:02 浏览: 223
题意简述:给定两个长度为n的数组a和b,每个数组都由n个不同的正整数组成。找出重新排列数组a的方式,使得对于所有1≤i≤n,ai>bi。如果得到的数组不同,则认为两种重新排列方式是不同的。求满足条件的方案数,对109+7取模。
思路:贪心+逆序对
首先,对数组a进行升序排序,对数组b进行降序排序。
然后,从a数组的末尾开始遍历,对于每个a[i],找到b中第一个小于a[i]的数字b[j],将a[i]插入到b[j]的前面,这样能够保证ai>bi,同时不改变其他数字的相对顺序。
最后,统计逆序对的个数即可,因为只有在构造过程中出现的逆序对才能够影响到方案数。
时间复杂度:O(nlogn)
参考代码:
阅读全文