详细阐述一下蓝书的做法
首先,我们创造\(n\)个点,每个点有一个权值\(p_i\),也有一个编号
蓝书的连边就是对每一个点,从这个点出发连一条有向边到编号为这个点权值的点
比如书上举的那个例子,编号分别为\(1,2,3,4,5,6\),权值分别为\(2,4,6,1,5,3\)
这样这个图肯定是由若干个环组成的
然后这个引理是怎么想到的:
我们考虑任意一次交换(此时的交换相当于在交换两个点的权值),如果这两个点不在同一个环里面,想一下就会发现整个图的环的个数就会减少一,如果两个点在同一个环里面,整个图的环的个数就会增加一,所以一次操作要么让环的个数增加一,要么让环的个数减少一
因此在满足\(m\)最小的情况下,我们每次的交换操作都是在同一个环里进行的(根据我们刚刚的分析,我们可以找到一个\(m\)的下界,而图中只要存在不是自环的环就可以一直这么拆,每次拆都会让环的个数加一)
然后我们再来考虑同一个环里面交换两个点的结果是什么,这个见蓝书就好了,手搓几下就可以想到引理了
这也是为什么后面的操作都是默认在同一个环里面进行操作的原因
标签:同一个,交换,编号,个数,计数,蓝书,权值 From: https://www.cnblogs.com/dingxingdi/p/18017262