菜鸟系列——polya计数法
来源:互联网 发布:看舌苔知病情图解 编辑:程序博客网 时间:2024/05/30 19:32
菜鸟就要老老实实重新学起:
Burnside引理,polya计数法:
Burnside引理: 1/|G|*(C(π1)+C(π2)+C(π3)+.....+C(πn));
C(π):指不同置换下的等价类数。例如π=(123)(3)(45)(6)(7),X={1,2,3,4,5,6,7};那么C(π)={3,6,7}共3个等价类。
Polya定理: 1/|G|*(mC(π1)+mC(π2)+mC(π3)+...+mC(πk)).
设G={π1,π2,π3........πn}是X={a1,a2,a3.......an}上一个置换群, 其中C(πk)为置换πk的循环节的个数。
eg:
POJ2409 Let it Bead
http://poj.org/problem?id=2409
题意:
有一个n长的项链,用m种颜色对其染色,有多少中不同的染色方法,项链可以旋转或者翻转。思路:
用polya计数法,
对于旋转:每种旋转的循环节数就是gcd(i,n).
对于翻转:奇数时,按一个点与对边的轴翻转,循环节就是(n+1)/2,有n种。
偶数时,可以以两条对边翻转,循环节数就是n/2,可以以两对点翻转,循环节数就是(n+2)/2 ,分别有n/2种
code:
long long n,m;long long flag,sum,ave,ans,res;long long gcd(long long x,long long y){ return y?gcd(y,x%y):x;}long long power(long long x,long long k){long long ans = 1;while(k) {if(k & 1) ans *= x;x *= x;k >>= 1;}return ans;}int main(){ int i,j,k,kk,t,x,y,z; while(scanf("%lld%lld",&m,&n)!=EOF&&n) { sum=0; for(i=1;i<=n;i++) sum+=power(m,gcd(n,i)); if(n&1)sum+=(n*power(m,(n+1)/2)); else sum+=(n/2*power(m,(n+2)/2)+n/2*power(m,n/2)); sum/=(2*n); printf("%lld\n",sum); } return 0;}
0 0
- 菜鸟系列——polya计数法
- hdu1812—Count the Tetris(polya计数)
- Polya计数
- Polya计数
- polya 计数法,burnside定理 学习小结
- Polya计数法总结 POJ2409&&2154&&SGU282
- POJ2154-Daze polya计数法优化
- burnside引理+polya计数法小结
- UVA10601 & Caioj1241【Polya计数法】Cubes
- Polya计数法浅析&caioj1475【Polya计数法】项链上的珠子
- polya计数学习小结
- acm-polya计数公式
- polya计数定理
- poj 2154 polya 计数
- HDU4633(Polya计数)
- hdu 3547(Polya计数)
- hdu 3869 polya计数
- poj 2409 polya计数
- 浅析Java中的final关键字
- Android Studio 快捷键
- spring mvc
- 深度学习的革命(研究现状综述)
- xml文件转换
- 菜鸟系列——polya计数法
- 父Prefab与子prefab问题
- Makefile
- Android ScrollView对滑动的监听当手离开屏幕时的处理(向上向下滑动,滑动到顶部与底部)
- ORACLE最大连接数问题
- GCD使用经验与技巧浅谈
- KL距离,Kullback-Leibler Divergence
- 苹果审核reject理由大全(1): 兑换码、奖品是iphone
- 机器学习算法与Python实践之(七)逻辑回归(Logistic Regression)