货架上至多反转一个子段 [l,r]。区间外与区间内的跨段配对在反转后相对位置不变,逆序对数不变;只会改变区间内部的两两关系。
设区间长度 k=r−l+1,区间内逆序对数为 invSeg,相等对数为 eqSeg,总对数 C=k(k−1)/2。反转后内部逆序变成原来的“小于对”,变化量
Δ=C−eqSeg−2⋅invSeg.超市一条货架上从左到右摆着 n 件商品,第 i 件的拣货优先级为整数 ai。理货员至多可以把某一个连续区间 [l,r] 整体倒序一次(也可以不操作),以便减少“左边优先级反而更高、拣货路径交叉”的情况。区间反转是指把 [al,al+1,…,ar] 变成 [ar,ar−1,…,al];若 l=r 则等价于不操作。
逆序对是满足 1≤i<j≤n 且 ai>aj 的有序对数量(相等不计入)。请在至多一次区间反转后,使逆序对数量尽可能小,并输出该最小值。
约束:序列长度不超过 2000,每个元素为正整数且不超过 1000000000。
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.