这道题题目十分吓人,但其实就是要将两个数组中第i大的排在一起就好了。
所以我们的问题就变成了变成上述情况要交换多少次。
这里我的方法是:用c[i];来表示b中i这个位置的数需要匹配的a中数的位置。(a数组不动)。
这样仔细一想就会发现次数其实就是c中的逆序对数。
然后就是用二分求逆序对了。
详细代码如下:
#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
const int maxn=100005