HDU 2838 Cow Sorting

题意:

给你一个序列,现在要让它变成递增序列,能进行的操作只能是交换相邻的两个数,并且交换的代价为这两个数的和。

题解:

就是一个升级版的逆序对,不过为了练习CDQ,我不用数据结构。
现在我们要处理的区间是$[L,R]$,令$m=(L+R)/2$那么考虑$[L,m]$已经处理好了,我们用$[L,m]$更新$[m+1,R]$的解。
由于已经将左边处理好了,所以打乱左边的顺序并没有什么影响。
所以现在将两边都从大到小排好序,然后用两个指针扫就能得到每个逆序对的贡献值了。
记得把右边的给排回去。

代码:

https://github.com/HarryGuo2012/ACMCode/blob/worldLine/HDU/2838.cpp