定义简化版:
置换,就是一个1~n的排列,是一个1~n排列对1~n的映射
置换群,所有的置换的集合。
经常会遇到求本质不同的构造,如旋转不同构,翻转交换不同构等。
不动点:一个置换中,置换后和置换前没有区别的排列
Burnside引理:本质不同的方案数=每个置换下不动点的个数÷置换总数(一个平均值)
Polya定理:一个置换下不动点的个数=颜色^环个数。(辅助Burnside引理,防止枚举不动点复杂度过高)
这篇文章写得很详细了(具体的在此不说了):
Burnside引理与Polya定理
**特殊模型的环个数:
①旋转同构,N个点,每个点移动k步(0<=k<=n-1),环个数gcd(k,N)
证明:
1.对于k是N的约数,显然成立。一个环用N/k个,可以分成N/(N/k)=k个环。gcd(k,N)=k也成立。
2.当k不是N的约数,最小的环长度是:lcm(N,k),环用的端点是:lcm/k个,可以凑成N/(lcm/k)=N*k/lcm=gcd(N,k)个。
证毕。
②对称同构:
奇数个点对称:1+(n-1)/2个(轴一定过一个顶点)
偶数:按边对称:n/2个
按点对称:2+(n-2)/2个。
(证明显然,画图自行理解)
**
例题:poj2154 Color
思路:列出式子,转化每个因子作为gcd的贡献。然后处理成欧拉函数即可。
而且,1/n的分母,因为化简的时候消掉了,不用求逆元之类的。(况且p不是质数,要EXLUCAS。。。)
(类似longge的问题(虽然这篇博客没用欧拉函数):[SDOi2012]longge的问题)