排列与逆序对

现在有一个排列\(T\),我们想要通过交换相邻元素的方式来让它变成升序的一个排列,需要的最小交换次数是多少呢

答案其实就是排列\(T\)中的逆序对数,因为我们可以发现,逆序对数为0的排列显然是唯一的,那么所有的减少逆序对数的操作都是必须的,而具体操作也很简单,只需找到当前不处于自己位置上的最大的数,然后将它一步一步交换的自己的位置上,很容易发现这样我们的每一步都减少了逆序对数

如果我们现在想要将排列\(T\)变成\(T'\)呢,这里的\(T'\)也是一个任意的排列。其实很简单,我们只需要将\(T'\)映射为一个升序的排列,再按照这样的映射关系将\(T\)映射为一个新的排列\(G\),再来计算\(G\)中的逆序对数即可

posted @ 2022-08-14 09:31  DQY_dqy  阅读(72)  评论(0编辑  收藏  举报