#PTXB2524. 【2025年莆田市C++专项选拔线下决赛-初中组】T4:魔法石
【2025年莆田市C++专项选拔线下决赛-初中组】T4:魔法石
题目描述
在遥远的“数域王国”,有一个特殊的试炼场——交换广场。这里有一个传奇的试炼,称为“数列排序挑战”。试炼的主角是一名年轻的勇士,名叫阿尔法。阿尔法得到了一个任务:他需要将一组神秘的数字石从小到大排序。每个数字石上刻着不同的数字,且这些数字之间没有任何重复。
每当阿尔法站在广场的中央时,他会发现这些数字石被随机放置在广场的不同位置,而阿尔法手中的魔法杖赋予了他一种特殊能力——交换魔法。这个魔法允许他每次交换任意两颗数字石的位置,但每次交换后,他只能得到一个非常小的提示:“当前石头序列离完全排序还有几步之遥。”
阿尔法决定尽可能高效地完成这个任务,希望尽量少地使用交换魔法,以节省时间和体力。那么问题来了:阿尔法最少需要多少次交换,才能让这些数字石按从小到大的顺序排列呢?
简单来说定一个数列 ,这个数列满足 (),现在要求你把这个数列从小到大排序,每次允许你交换其中任意一对数,请问最少需要几次交换?
输入格式
第一行是一个整数,代表数字个数 。
第二行有 个整数用空格分隔开,表示数列 。
输出格式
只有一行,包含一个数,表示最少的交换次数。
样例
8
8 23 4 16 77 1 53 100
5
5
1 4 3 2 5
1
数据范围
对于 的数据,,;
对于另外 的数据,,,;
对于 的数据,,。
相关
在以下作业中:
