CF1372C Omkar and Baseball
题目描述
Patrick 喜欢打棒球,但有时候他会花太多时间击出本垒打,导致头脑变得模糊!Patrick 确信他在 $n$ 场比赛中的得分是一个恒等排列(即第一场得 $1$ 分,第二场得 $2$ 分,依此类推)。然而,当他回头查看自己的记录时,发现所有的数字都被打乱了!
定义一种特殊交换如下:选择分数序列的任意一个子数组,并对其元素进行排列,使得子数组中的每个元素都不能回到原来的位置。例如,对 $[1,2,3]$ 进行一次特殊交换可以得到 $[3,1,2]$,但不能得到 $[3,2,1]$,因为 $2$ 仍然在原来的位置。
给定一个长度为 $n$ 的排列,请帮助 Patrick 求出将该排列变为有序所需的最少特殊交换次数!可以证明,在给定的约束下,这个次数不会超过 $10^{18}$。
如果数组 $a$ 是数组 $b$ 的一个子数组,那么 $a$ 可以通过从 $b$ 的开头删除若干(可能为零或全部)元素,以及从末尾删除若干(可能为零或全部)元素得到。
输入格式
每个测试包含多个测试用例。第一行为测试用例数 $t$($1 \le t \le 100$)。接下来是每个测试用例的描述。
每个测试用例的第一行包含一个整数 $n$($1 \leq n \leq 2 \cdot 10^5$),表示给定排列的长度。
每个测试用例的第二行包含 $n$ 个整数 $a_{1},a_{2},...,a_{n}$($1 \leq a_{i} \leq n$),表示初始排列。
保证所有测试用例中 $n$ 的总和不超过 $2 \cdot 10^5$。
输出格式
对于每个测试用例,输出一个整数,表示将该排列变为有序所需的最少特殊交换次数。
说明/提示
在第一个排列中,已经是有序的,因此不需要任何交换。
可以证明,第二个排列至少需要 $2$ 次交换才能变为有序。
$[3, 2, 4, 5, 1, 6, 7]$
对区间 $(1, 5)$ 进行一次特殊交换:
$[4, 1, 2, 3, 5, 6, 7]$
对区间 $(1, 4)$ 再进行一次特殊交换:
$[1, 2, 3, 4, 5, 6, 7]$
由 ChatGPT 4.1 翻译