HDU-置换群
来源:互联网 发布:js判断浏览器是否是ie 编辑:程序博客网 时间:2024/05/21 06:57
问题及代码:
/* *Copyright (c)2014,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:HDU.cpp *作 者:单昕昕 *完成日期:2015年1月27日 *版 本 号:v1.0 *问题描述: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:<img src="http://img.blog.csdn.net/20150127221620625?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTUlLQVNBMw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />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:<img src="http://img.blog.csdn.net/20150127221734621?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTUlLQVNBMw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />Help Twilight Sparkle find the lexicographic smallest solution. (Only considering numbers). *程序输入: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). *程序输出:For each case, output the corresponding result. Sample Input52 5 4 3 131 2 3Sample Output(1 2 5)(3 4)(1)(2)(3)*/#include<cstdio>#include<cstring>#include<iostream>using namespace std;const int MAX=100000;int main(){ std::ios::sync_with_stdio(false); int n,i,j,k; int a[MAX]; while(cin>>n) { for(i=1; i<=n; i++) cin>>a[i]; for(i=1; i<=n; i++) { while(a[i]) { cout<<"("<<i; j=a[i]; a[i]=0; while(a[j]) { cout<<" "<<j; k=a[j]; a[j]=0; j=k; } cout<<")"; } } puts(""); } return 0;}
运行结果:
知识点总结:
置换群。
学习心得:
就是按规律置换。
0 0
- hdu 4259 置换群
- HDU-置换群
- HDU 5495 置换群
- HDU 5495(置换群)
- hdu 置换群
- 【HDU】1439 Cipher 置换群
- hdu 5495 LCS 置换群
- HDU 6038 Function 置换群
- HDU 6038 Function 【置换群】
- 【HDU 1439】Cipher(置换群)
- hdu 4529 Double Dealing (置换群)
- HDU 4259 Double Dealing【简单群置换】
- HDU 5495 LCS (置换群)
- HDU 5495 LCS(置换群)
- hdu 6038 Function【置换群进阶】
- HDU 3430 置换群 + 同余方程组
- 置换 置换群 应用
- 置换 置换群 应用
- SecureCRTP配置几个小技巧
- 与身份验证HTTP服务器通信(Communicating with Authenticating HTTP Servers)
- HDU2048 神、上帝以及老天爷
- Adb connection Error:远程主机强迫关闭了一个现有的连接
- 二分查找(Binary Search)需要注意的问题,以及在数据库内核中的实现
- HDU-置换群
- SO_KEEPALIVE选项
- could not instantiate RegionFactory [org.hibernate.cache.impl.bridge.RegionFactoryCacheProviderBrid
- 南邮-1008-第几天
- nyoj169 素数
- 二叉树算法总结
- 1018. Public Bike Management (30)
- LeetCode --- 3. Longest Substring Without Repeating Characters
- hdu2089 不要62 数位dp