POJ2369 置换群大水题
来源:互联网 发布:扒一扒陈娅安 知乎 编辑:程序博客网 时间:2024/05/01 11:15
世界真的很大
与这张图片不符,这是一道很基础的置换群的题了,并不难,只要清楚置换群的概念,不会超过5分钟AC,所以其实用这道题来最终检测对置换群的概念理解是非常不错的,嗯嗯。
先来说一下题意:给你一串数列1~n,但是是打乱顺序的,问换回正常升序最少需要多少次,说清楚一点,最少要“置换”多少次,这样。
那么很简单,找置换里的循环节吧,每个循环节的元素个数决定了需要多少次才能还原,那么直接取lcm就行了。
完整代码:
#include<stdio.h>int a[100010],n,f[1000010],vis[100010];int gcd(int a,int b){ if(b == 0) return a; return gcd(b,a%b);}int lcm(int a,int b){ return a/gcd(a,b)*b;}int main(){ scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d",&a[i]); f[a[i]]=i; } int ans=1; for(int i=1;i<=n;i++) { int j=i,cnt=0; while(vis[j]==0) { cnt++; vis[j]=1; j=f[j]; } if(cnt) ans=lcm(ans,cnt); } printf("%d",ans);}
超级短是不是!用f数组记录原序列每一项与正常序列的每一项的关系,然后由每一项出发去标记他所属的循环节,cnt记录循环节长度,vis打标记表示哪些已经有“归属”的循环节了,最后所有的循环节长度取最小公倍数就是答案啦!
2 0
- POJ2369 置换群大水题
- 【置换群】 poj2369 Permutations
- POJ2369 置换群
- poj2369 置换群基础
- poj2369 Permutations 置换群
- POJ2369 Permutations【置换群】
- POJ2369 Permutations 置换群循环节
- POJ2369————Permutations(置换群,数论)
- poj2369问置换多少次变成有序序列
- POJ2369
- 大水题!!!
- 大水题
- 置换 置换群 应用
- 置换 置换群 应用
- 置换 置换群 应用
- poj 1656 大水题
- POJ 2328 大水题
- hdu 4247 大水题
- Android应用签名打包相关问题
- React Native ListView中图片加载优化处理(三)
- NOIP 2005 等价表达式(hash算法)
- 连通图
- YangHong
- POJ2369 置换群大水题
- 藏尾诗
- cocopods安装步骤及常见错误
- 给linux里mysql创建新用户并赋予权限指南
- 跳转指定位置,类似锚链接
- ASP.net中直接操作textarea控件的方法
- arcgis error 000210
- XSD含义
- 第二十四讲项目二 油量监控