置换群及其应用
Posted aininot260
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了置换群及其应用相关的知识,希望对你有一定的参考价值。
称为Ω上的一个n元置换或n阶置换
Ω上的置换 可表示为
典型例题是POJ2369,给定一个序列,问需要最少需要置换多少次才能变为有序序列
有了这个定理就可以做题了,我们求出每一个数的最小循环节,求LCM就好了
介绍一下什么是循环节:
1 2 3 4 5
4 1 5 2 3
1->4->2->1
(1,4,2)为一个循环节,长度为3
1 #include<cstdio> 2 const int maxn=1005; 3 int n; 4 int a[maxn]; 5 int gcd(int a,int b) 6 { 7 return b==0?a:gcd(b,a%b); 8 } 9 int lcm(int a,int b) 10 { 11 return a/gcd(a,b)*b; 12 } 13 int main() 14 { 15 while(scanf("%d",&n)==1) 16 { 17 for(int i=1;i<=n;i++) scanf("%d",&a[i]); 18 int ans=1; 19 for(int i=1;i<=n;i++) 20 { 21 int tmp=a[i]; 22 int cnt=1; 23 while(tmp!=i) 24 { 25 tmp=a[tmp]; 26 cnt++; 27 } 28 ans=lcm(ans,cnt); 29 } 30 printf("%d",ans); 31 } 32 return 0; 33 }
超级超级简单的模拟
以上是关于置换群及其应用的主要内容,如果未能解决你的问题,请参考以下文章
poj 1286 Necklace of Beads & poj 2409 Let it Bead(初涉polya定理)