【Usaco 2010 NOV Gold】奶牛的图片
题目大意:给你一个n的排列,每次可以交换相邻元素,问你最少用多少次能把原序列变成一个首尾相接后存在1~n有序排列的序列。
总结:善于发现移动的不变量。
对于有序化的题目想到逆序对。
发现每次交换相邻的两个位置,逆序对都会变化1.
如果我们要把原序列从小到大排序(逆序对为0)的话。因为要步数最少,那么我们肯定每一次移动,都往对逆序对序列贡献为-1的方向走,每次都能找到这种移动方法,所以最少要用逆序对个数次。
至于首尾相接后的合法序列,我们可以认为1是n + 1, 2是 n + 2依次类推..
原创
2020-08-08 15:38:24 ·
200 阅读 ·
0 评论