蒟蒻求助
  • 板块灌水区
  • 楼主Xichenyu
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/9/24 19:42
  • 上次更新2023/11/2 18:15:54
查看原帖
蒟蒻求助
1022371
Xichenyu楼主2023/9/24 19:42

越越希望争得勇敢头衔。国王知道骑士不仅勇敢,还需要足够聪明。所以他要求越越解决以下任务。

给定一个由 1 到 2n 的数字组成的排列 p。你可以进行两种类型的操作。

交换 p 1 ​ 和 p 2 ​ , p 3 ​ 和 p 4 ​ ,...,

交换 p 1 ​ 和 p 1 n+1 ​ , p 2 ​ 和 p 2 n+2 ​ ,..., p n ​ 和 p 2n ​ 。 任务是找出对给定排列进行排序所需的最少操作次数。

【输入描述】: 第一行包含整数 n ( 1≤n≤1000)。

第二行包含 2n 个整数,即从 1 到 2n 的数字排列,表示 p。

【输出描述】: 打印一个整数,表示对排列进行排序所需的最少操作次数。

如果使用这些操作无法对排列进行排序,则打印 −1。

【样例输入1】:

3

6 3 2 5 4 1

【样例输出1】: 3

【样例1解释】: 在第一个示例中,你可以通过三个操作将排列排序:

进行操作 1: 3,6,5,2,1,4。

进行操作 2,1,4,3,6,5。

进行操作 1 1: 1 , 2 , 3 , 4 , 5 , 6 1,2,3,4,5,6。

【样例输入2】: 2 3 4 2 1

【样例输出2】: -1

【样例输入3】: 4 1 2 3 4 5 6 7 8

【样例输出3】: 0 【数据范围及描述】:

对于 20% 的数据: 1≤n≤10;

对于 100% 的数据: 1≤n≤1000;

2023/9/24 19:42
加载中...