[ABC072D] Derangement
题意翻译
给你一段长为$N$的序列$p$,你每次可以进行操作交换两个相邻的元素
问最少要几次才能满足任意$i\in[1,N],p_i \neq i$
题目描述
[problemUrl]: https://atcoder.jp/contests/abc072/tasks/arc082_b
$ 1,2,..,N $ からなる順列 $ p_1,p_2,..,p_N $ が与えられます。 次の操作を何回か ($ 0 $回でもよい) 行うことが出来ます。
操作: 順列で**隣り合う**二つの数を選んでスワップする。
何回か操作を行って、任意の $ 1\ <\ =i\ <\ =N $ に対して $ p_i\ ≠\ i $ となるようにしたいです。 必要な操作の最小回数を求めてください。
输入输出格式
输入格式
入力は以下の形式で標準入力から与えられる。
> $ N $ $ p_1 $ $ p_2 $ .. $ p_N $
输出格式
必要な操作の最小回数を出力せよ。
输入输出样例
输入样例 #1
5
1 4 3 5 2
输出样例 #1
2
输入样例 #2
2
1 2
输出样例 #2
1
输入样例 #3
2
2 1
输出样例 #3
0
输入样例 #4
9
1 2 4 9 5 8 7 3 6
输出样例 #4
3
说明
### 制約
- $ 2\ <\ =N\ <\ =10^5 $
- $ p_1,p_2,..,p_N $ は $ 1,2,..,N $ の順列である。
### Sample Explanation 1
$ 1 $ と $ 4 $ を入れ替え、その後 $ 1 $ と $ 3 $ を入れ替えることで $ p $ は $ 4,3,1,5,2 $ となり、これは条件を満たします。 これが最小回数なので、答えは $ 2 $ となります。
### Sample Explanation 2
$ 1 $ と $ 2 $ を入れ替えれば条件を満たします。
### Sample Explanation 3
初めから条件を満たしています。