CF(441D Valera and Swaps)置换群

简介:

题意:1-n的一个排列 p1, p2, ..., pn,f(p)的定义是此排列要交换最少的数对能够回到原排列1,2,3,4...n。给一个排列p。要将其变换成f值为m的排列,问至少要交换几个数对,并输出字典序最小的那组答案。


解法:处理出全部的置换群,求出环数k,此时f值为n-k。然后推断n-k和m的大小,分为两种操作

           1、加环,这个是在随意元素个数大于1的环内交换随意两个数都能够做到加环

           2、减环,交换随意两个环的随意两个元素。就能够做到将两个环连接起来

           题目要求是输出字典序最小,那么就暴力搞。

代码:

 

}







本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5239833.html,如需转载请自行联系原作者

相关文章
|
4月前
|
算法
CF 1561
【7月更文挑战第20天】
48 2
|
5月前
|
C++ Windows
VS2017出现的神奇错误HRSULT:0x80041FE2
VS2017出现的神奇错误HRSULT:0x80041FE2
104 1
|
人工智能 网络架构
CF 698A
CF 698A
74 0
|
人工智能
CF628B
CF628B
68 0
|
人工智能
cf 220B(莫队)
cf 220B(莫队)
98 0
CF1000F One Occurrence(莫队)
CF1000F One Occurrence(莫队)
54 0