P12910 [NERC 2020] King's Task
题目描述
勇敢的骑士来到国王面前,请求迎娶公主。国王知道骑士很勇敢,但他还想确认骑士是否足够聪明。于是国王给骑士布置了以下任务:
有一个从 $1$ 到 $2n$ 的数字排列 $p_i$。你可以进行两种操作:
1. 交换 $p_1$ 和 $p_2$、$p_3$ 和 $p_4$、...、$p_{2n-1}$ 和 $p_{2n}$(即相邻两两交换)。
2. 交换 $p_1$ 和 $p_{n+1}$、$p_2$ 和 $p_{n+2}$、...、$p_n$ 和 $p_{2n}$(即前半部分与后半部分对应位置交换)。
任务要求找到将给定排列排序所需的最少操作次数。
实际上骑士并没有那么聪明,但他很有魅力,所以公主请你帮助他完成国王的任务。
输入格式
第一行包含整数 $n$($1 \le n \le 1000$)。
第二行包含 $2n$ 个整数 $p_i$ —— 表示从 1 到 $2n$ 的一个排列。
输出格式
输出一个整数 —— 将排列排序所需的最少操作次数。如果无法通过这些操作将排列排序,则输出 $-1$。
说明/提示
在第一个样例中,可以通过三次操作将排列排序:
1. 执行操作 1:$3, 6, 5, 2, 1, 4$。
2. 执行操作 2:$2, 1, 4, 3, 6, 5$。
3. 执行操作 1:$1, 2, 3, 4, 5, 6$。
翻译由 DeepSeek V3 完成