U460954 多边形的表示方法
题目背景
嘿!熊 sir 要来检查暑假作业了,各位……都写完了吗?
题目描述
我们都知道几何中多边形的表示方法:
从任意一个点开始,顺时针或逆时针写出每一个点所对应的字母。
但是,你苛刻的数学老师(不是熊sir)不仅要检查你的表示方法是否正确,他还要求你让这个字母串尽可能的有序,即逆序对尽可能的少。
但是班上的同学日理万鸡,根本没工夫处理这一点小事,他们把这个任务外派给了你
**形式化地:给定一个有点权的环,求一种展开成链的方式使链中的逆序对数量最少(展开后可以翻转整个链)**
输入格式
为了避免繁杂的字符串操作,第 $i$ 个点有一个数字编号 $D_i$,请根据数字编号判断逆序对、输出表示方案。
第一行,输入 $n$,表示你需要处理一个 $n$ 边形(当然,这个 $n$ 边形有 $n$ 个顶点)
第二行,输入 $n$ 个整数,用空格隔开,表示这个多边形的一种表示方法
输出格式
一行,输出一个整数,表示最优表示方案中逆序对的数量
说明/提示
### 逆序对的定义
对于一种表示方案中的第 $i$ 个点和第 $j$ 个点,如果
$$
i < j\ \ 且\ \ D_i > D_j
$$
则称 $i$ 与 $j$ 之间存在一个逆序对
### 数据范围
对于 $15\%$ 的数据,$n \leq 400$。
对于 $40\%$ 的数据,$n \leq 1000$。
对于 $60\%$ 的数据,$n \leq 4000$。
对于 $100\%$ 的数据,$1 \leq n \leq 5 \times 10^5$,$1 \leq D_i \leq 10^9$。