#JR0005. 排队
排队
当前没有测试数据。
题目背景
某一次CSP模拟赛,所有人都考砸了。黄老师 got really angry and decided 让考得好的同学先吃九号食堂。
题目描述
现在由你来扮演黄老师,你拿出了成绩单,却发现你的 个同学已经一窝蜂排好了队准备拿菜,可是并不是你想要的顺序。
你想到了两种解决方案:
1)每次交换相邻的两名同学
2)每次交换任意的两名同学
请问你分别至少需要交换几次才能使同学们按成绩降序排列(重复的不重要)。
输入输出
输入有两行,第一行一个整数 ,表示人数,第二行有 个整数 表示每名同学的CSP模拟成绩
输出仅一行,两个整数分别表示两种方案的交换次数,中间用一个空格分割。
说明提示
对于“1)”,使用归并排序作答,对于“2)”,答案=N-置换循环节数。
SO,what's “置换循环节”?
e.g.当前序列 ,目标序列 。那么对于原 0 号元素,它目标位置也为 0 ,形成自循环;对于原 1 号元素,它目标位置为 2 ,对于原 2 号元素,它目标位置为 1,所以两者形成一个循环节。共两个循环节。