编程题
### 问题描述 小蓝是一个年轻有为的魔法师,他正在进行一场不同寻常的实验。 他手上有一个由 $1$ 到 $N$ 的数字组成的序列 $A$,他可以进行一种特殊的魔法操作:将序列中的两个相邻数字交换位置。 小蓝希望通过不断使用这个魔法操作,将序列变成一个新的 $B$,使得对于所有的 $1\le i\le N$,都满足 $B_i\ne i$。也就是说,序列 $B$ 中的任意一个元素都不能和它在原序列 $A$ 中的位置相同。 现在小蓝想知道,至少需要进行多少次魔法操作才能达到这个目标呢? ### 输入格式 输入共 $2$ 行。 第一行包含一个整数 $N$($1\leq N \leq 10^5$),表示序列的长度。 第二行包含 $N$ 个整数 $p_1,p_2,\ldots,p_N$($1\leq p_i \leq N$),$p_1, p_2, \ldots, p_N$ 是 $1,2,\ldots,N$ 的一个排列。 ### 输出格式 输出一个整数,表示将初始序列变换成满足 $B_i\ne i$ 的目标序列所需的最小魔法操作次数。 ### 样例输入 ``` 5 3 1 4 5 2 ``` ### 样例输出 ``` 2 ```
查看答案
赣ICP备20007335号-2