题目:
有一个长度为 nnn 的数列 aaa,保证 ai≠aj(i≠j)a_i \ne a_j(i \ne j)ai=aj(i=j)。现在可以随意交换两个数。请问最少需要多少次才可以使得数列从小到大排序?
n≤105n \le 10^5n≤105
思路:
把数列 aaa 的每一个数的下标和在排序好的 aaa 的那个数的下标连一条有向边。显然每个结点入度为 111,出度为 111,是必然形成若干个环的。然后答案为所有环的点数-1后的和。(别问我怎么想出来的,我也不知道)
有一个大佬证明了不可能比答案大和不可能比答案小,听着好迷糊。