/ Vijos / 题库 /

最小逆序对

最小逆序对

时间限制:1秒  内存限制:256M


【题目描述】

  逆序数的定义如下:对于一个包含 \(n\) 个不同数字的序列 \(a_1, a_2, \dots, a_n\),如果存在下标 \(i < j\) 且 \(a_i > a_j\),则称 \((a_i, a_j)\) 为一个逆序对。序列的逆序数定义为逆序对的总数。例如,序列 3 1 4 2 的逆序对有 (3,1), (3,2), (4,2),因此逆序数为 3。

  现在给出一个序列 \(a_1, a_2, \dots, a_n\),其中 \(n \leq 200000\),且序列中的数字是 \(0\) 到 \(n-1\) 的一个排列。你可以进行以下操作:将序列的第一个元素移到序列的末尾,得到一个新的序列。例如,对于序列 \(a_1, a_2, ..., a_n\),操作后得到 \(a_2, a_3, ..., a_n, a_1\)。

  你需要求出:在所有可能的序列中(包括原始序列以及通过若干次上述操作得到的序列),最小的逆序数是多少。

【输入格式】

  第一行是一个整数 \(n(n \leq 200000)\)。
  第二行包含 \(n\) 个整数,表示序列 \(a_1, a_2, \dots, a_n\),保证是 \(0\) 到 \(n-1\) 的一个排列。

【输出格式】

  输出一行,包含一个整数,表示最小的逆序数。

【输入输出样例1】

 Input

10
1 3 6 9 0 8 5 7 4 2

 Output

16

【数据限制】

  对于 \(100\%\) 的数据,\(1 ≤ n ≤ 200000\)。

【来源】

  Mr.he**

信息

ID
3163
难度
9
分类
数据结构 | 线段树平衡树树状数组 点击显示
标签
(无)
递交数
2
已通过
1
通过率
50%
被复制
1
上传者