poj 1804 Brainman(归并排序求逆序对)
题目链接
题意:给定一个序列a[],每次只允许交换相邻的两个数,问至少要交换多少次才能将它变为非递减序列
思路:
这题其实是在求逆序对数
每个点的左边大于它的,右边小于它的数的个数,就是当前点的逆序对数
一般来说会用树状数组去求逆序对
还可以用Merge_sort(),即归并排序
实际上归并排序的交换次数就是这个数组的逆序对数:
归并排序是将序列a[l,r]分成两部分a[l,
原创
2016-03-15 23:16:18 ·
732 阅读 ·
0 评论