题意简述
给定一个长度为 $n$ 的排列 $p_1, p_2, \dots, p_n$。
你需要构造一个数组 $a_1, a_2, \dots, a_n$,其方式如下:
对于每个 $1 \leq i \leq n$,要么令 $a_i = p_i$,要么令 $a_i = 2n - p_i$。
请找出数组 $a_1, a_2, \dots, a_n$ 中可能的最小逆序对数。
长度为 $n$ 的排列是一个由 $1$ 到 $n$ 的 $n$ 个互不相同的整数组成的数组,顺序任意。例如,$[2,3,1,5,4]$ 是一个排列,但 $[1,2,2]$ 不是排列(数字 $2$ 出现了两次),$[1,3,4]$ 也不是排列(当 $n=3$ 时,数组中出现了 $4$)。
在数组 $a_1, a_2, \dots, a_n$ 中,一个逆序对是指一对下标 $(i,j)$,满足 $1 \leq i < j \leq n$ 且 $a_i > a_j$。
思路分析
尝试由特殊到一般。
先考虑对于 $p_i=1$,它参与构成的逆序对有什么?
- 如果不翻转,那么所有的它之前的数和它构成逆序对。即 $\dots, (i-3,i),(i-2,i),(i-1,i)$。
- 如果翻转,那么所有的它之后的数和它构成逆序对。即 $(i, i+1),(i,i+2),(i,i+3),\dots$。
所以说,$p_i=1$ 构成的逆序对仅和它所处的位置有关。
这个结论可以推广吗?——可以的。
因为所有的与 $p_i=1$ 有关的逆序对已经在之前处理掉了,所以 $p_i=2$ 构成的逆序对也仅与它所处的位置有关。
所以我们只需要从小到达依次考虑 $p_i$,向答案中加一个 $\min(\text{lbigger}, \text{rbigger})$ 即可。
然后从原序列中删去 $p_i$。