hdu 4985(模拟)
2016-06-30 20:46
246 查看
Little Pony and Permutation
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 639 Accepted Submission(s): 342
[align=left]Problem Description[/align]
As
a unicorn, the ability of using magic is the distinguishing feature
among other kind of pony. Being familiar with composition and
decomposition is the fundamental course for a young unicorn. Twilight
Sparkle is interested in the decomposition of permutations. A
permutation of a set S = {1, 2, ..., n} is a bijection from S to itself.
In the great magician —— Cauchy's two-line notation, one lists the
elements of set S in the first row, and then for each element, writes
its image under the permutation below it in the second row. For
instance, a permutation of set {1, 2, 3, 4, 5} σ can be written as:
Here σ(1) = 2, σ(2) = 5, σ(3) = 4, σ(4) = 3, and σ(5) = 1.
Twilight
Sparkle is going to decompose the permutation into some disjoint
cycles. For instance, the above permutation can be rewritten as:
Help Twilight Sparkle find the lexicographic smallest solution. (Only considering numbers).
[align=left]Input[/align]
Input
contains multiple test cases (less than 10). For each test case, the
first line contains one number n (1<=n<=10^5). The second line
contains n numbers which the i-th of them(start from 1) is σ(i).
[align=left]Output[/align]
For each case, output the corresponding result.
[align=left]Sample Input[/align]
5
2 5 4 3 1
3
1 2 3
[align=left]Sample Output[/align]
(1 2 5)(3 4)
(1)(2)(3)
= = 把a数组设为bool 型,无限WA。。。我真是。。。本来1A的
题意:就是找循环。比如说 1 ->2 -> 5->1 所以 (1,2,5)是一个循环。
#include <stdio.h> #include <math.h> #include <iostream> #include <algorithm> #include <string.h> #include <vector> using namespace std; const int N = 100005; bool vis ; int res ,a ; int main() { int n; while(scanf("%d",&n)!=EOF){ for(int i=1;i<=n;i++){ scanf("%d",&a[i]); } memset(vis,false,sizeof(vis)); for(int i=1;i<=n;i++){ int j=i; if(vis[j]) continue; int id = 0; while(!vis[j]){ res[id++] = j; vis[j]=true; j = a[j]; } printf("("); for(int i=0;i<id-1;i++){ printf("%d ",res[i]); } printf("%d)",res[id-1]); } printf("\n"); } return 0; }
相关文章推荐
- 寻找奇数出现
- Maven install 报Fatal error compiling: tools.jar not found错误的处理
- Maven的生命周期
- 【bzoj4199】[Noi2015]品酒大会 后缀自动机
- C#标准查询运算符之推迟执行案例
- 嵌入式开发之secureCRT 的基本使用
- NoSql之Redis集群原理
- 记录自己的进步的点点滴滴
- 利用Nginx做负载均衡
- 微信点餐创业记
- 最大公共字符串输出
- 常用二极管IN4148和单片机驱动的一些关系
- 面试题21:包含min函数的栈
- Tomcat 7.0的配置及发布多个web应用以及不同端口多工程配置(第二版)
- QQ IDKey生成--一键加群
- 二叉树的镜像
- 倒计时练习
- Linux 下网络相关命令
- keil 之map文件应用
- 外网主机访问虚拟机中的部署在tomcat上的web项目