poj 3128 Leonardo's Notebook(置换群的分数幂运算)
2016-12-06 20:14
435 查看
Problem Link
Leonardo’s Notebook大意:水题判断是否存在一个置换T, s.t T2=T′.
Analysis
由置换的性质,若T′可以开方,则它的每一个循环都可以开方,而由于2是质数,如果,循环节是奇数,那么它是一定可以开方的,如果循环节是偶数,由于T2,一定会分裂成两个相等的循环,因此,这个为偶数的相等的循环一定是偶数个。AC code
Source Code Problem: 3128 User: taotao Memory: 704K Time: 0MS Language: G++ Result: Accepted Source Code #include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #include<cstring> using namespace std; const int maxn = 1111; int n = 26; int a[26]; char s[30]; int num[30]; bool vis[30]; bool solve() { memset(num,0,sizeof(num)); memset(vis,false,sizeof(vis)); int cnt =0; for(int i=0 ; i<n ; ++i) { if(!vis[a[i]]) { cnt =0; int tmp =a[i]; while(!vis[tmp]) { cnt++; vis[tmp] = true; tmp = a[tmp]; } num[cnt]++; } } for(int i =0 ; i<=26 ; i+=2) if(num[i]&1)return false; return true; } int main() { //freopen("H:\\c++\\file\\stdin.txt","r",stdin); int T; scanf("%d",&T); while(T--) { scanf("%s",s); for(int i= 0 ; i<n ; ++i) a[i] = s[i]-'A'; if(solve()){ cout<<"Yes"<<endl; }else cout<<"No"<<endl; } return 0; }
相关文章推荐
- poj 3128 Leonardo's Notebook (置换群)
- POJ-3128 Leonardo's Notebook 置换群分数幂
- [ACM] poj 3128 Leonardo's Notebook (置换群,循环节)
- [ACM] poj 3128 Leonardo's Notebook (置换群,循环节)
- [ACM] poj 3128 Leonardo's Notebook (置换群,循环节)
- POJ 3128 Leonardo's Notebook(置换)
- 【POJ 3128】Leonardo's Notebook
- poj 3128 Leonardo's Notebook(置换的幂)
- Leonardo's Notebook POJ - 3128(置换群的开方判断)
- POJ 3128 Leonardo's Notebook 笔记
- poj 3128 Leonardo's Notebook (置换)
- poj 3128 Leonardo's Notebook(置换的幂)
- POJ 3128 Leonardo's Notebook
- POJ 题目3128Leonardo's Notebook(置换的平方)
- POJ 3128 Leonardo's Notebook [置换群]
- UVA 12103 - Leonardo's Notebook(数论置换群)
- 【poj 3128】置换群 循环节
- poj 1721 CARDS(置换群的幂运算)
- 【LA 3641】 Leonardo's Notebook (置换群)
- POJ3128 Leonardo's Notebook【置换群】