polya|burnside定理的一些总结

基于正方形的置换:(hdu 1812)
旋转只有 0,90,180,270度三种旋法。
旋0度,则置换的轮换数为n*n
旋90度,n为偶数时,则置换的轮换数为n*n/4,n为奇数,则置换的轮换数为(n*n-1)/4+1
旋180度,n为偶数时,则置换的轮换数为n*n/2,n为奇数,则置换的轮换数为(n*n-1)/2+1
旋270度,n为偶数时,则置换的轮换数为n*n/4,n为奇数,则置换的轮换数为(n*n-1)/4+1


基于环形的置换:(hdu 3923)
一个由n个点组成的环
旋转有n中置换:
对于每种置换轮换数为:gcd(n,i)
翻转(对称):
奇数时只有一种置换:
一个顶点和一条边的中点连线为轴(n个)
偶数时分成两大类置换:
1、边和边的中点连线为轴(n/2个)
2、点和点的连线为轴(n/2个)


基于正方题的置换:(uva 10601)
1、自身不变。循环节12个,长度1
2、根据定点连线为轴旋转120度、240度。循环节4个,长度3
3、根据对面的中心连线为轴旋转90、180、270度。90、270循环节个数3,长度4。180循环节个数6,长度2
4、根据对边的中心连线为轴旋转180度。循环节个数7个,5个长度2,2个长度1,这里要暴力枚
举长度为1的循环节涂什么颜色。


问题普遍是分为三类基础问题

1、小数据(n小)
2、大数据(n大)
3、小数据+染色限定(颜色种类c小)

4、超大数据+染色限定(颜色种类c大)


1、小数据解法
一般这样的题目都是完全裸的polya,只要判断出循环节个数基本就解决了问题。
这类题目有两个小类,一个是颜色不限,一个是限定颜色用的个数。
对于第一类用polya直接可以搞定(poj 1286 2409)

对于第二类需要用burnside引理,主要精力是计算每种置换不动点的个数(uva 11255)


2、大数据解法(poj 2154)

这类一般是出现在环的换装置换上,我们知道环的置换有n类置换,枚举这n类置换是不可能的但是我们可以枚举gcd(n,i)=k,也就是枚举循环节的个数,然后判断有多少这种i,这里用到数论,通过欧拉函数后者容斥定理来计算。


3、大数据+染色限定(poj 2888)

这种对于某个循环节为k的置换要计算满足的i个数,因为有颜色限定所以不能直接搞,可以考虑用关系矩阵存某两种颜色是否可以相邻,然后k次幂得到循环节数k对应染色方案数,答案就在矩阵的对角线上。


4、大数据+染色限定(hdu 2865)
基于上面的基础,对于颜色种类超大的情况无法用矩阵存,那么考虑用dp,dp[i][0],dp[i][1],基于k长循环节的置换上,枚举第一个点的颜色比如是c,1表示第i个位置染了c颜色,0表示第i位置没染c颜色,最后dp[k][0]就是答案。应为k很大所以用矩阵乘法来解这个递推式


你可能感兴趣的:(polya|burnside定理的一些总结)