The inversion number of a given number sequence a1, a2, ..., an is the number of pairs (ai, aj) that satisfy i < j and ai > aj.
Input The input consists of a number of test cases. Each case consists of two lines: the first line contains a positive integer n (n <= 5000); the next line contains a permutation of the n integers from 0 to n-1.
Output For each case, output the minimum inversion number on a single line.
Sample Input
10 1 3 6 9 0 8 5 7 4 2
Sample Output
16
Author CHEN, Gaoli
Source ZOJ Monthly, January 2003
Recommend Ignatius.L | We have carefully selected several similar problems for you: 1698 1540 1255 2795 1828
|
题意:给一个数字n,然后给出0~n-1的排列,求出逆序对数,然后,把a[1]放在a[n]后面,在求逆序对数,以此类推,求最小的逆序对数。
分析1(树状数组做法):
首先树状数组求逆序对很好求,注意要加1,因为树状数组不能维护从0开始,关键是本题的一个规律。
1~n的排列)的排列第一个位置和最后一个位置是很特殊的:
与第一个位置的匹配的逆序数就是比他的小的数的个数:a[1]-1
与最后一个位置的匹配的逆序数就是比他的大的数的个数:n-a[1]
所以,如果将第一个移动到最后一个且排列前的逆序数为ans,则移动后的逆序数为ans-(a[1]-1)+n-a[1]
分析2(线段树做法):
线段树比区间更强大了,正序倒序均可