B. 排列(permutation)

    Type: Default File IO: permutation 1000ms 256MiB

排列(permutation)

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

【题目描述】

​ 有一个排列pp,现在小LL可以不断地交换排列中的两个数,小LL想让这个排列变成一个单位排列,但他不会求最少的操作次数,你可以帮帮他吗?

​ 注意:单位排列指对于任意的i(1in)i(1\leq i \leq n),满足pi=ip_i=i的排列。

【输入格式】

​ 输入文件名为permutation.in。

​ 第一行一个正整数TT,表示测试点数目。

​ 对于每一个测试点,第一行一个数nn,表示排列长度。

​ 接下来一行nn个数pip_i,表示排列。

【输出格式】

​ 输出文件名为permutation.out。

​ 对于每一个测试点,输出一行一个数,表示最少的交换次数。

1
5
3 4 2 5 1
4

【样例解释】

​ 一种可行的交换44次的方案为:

​ $3~4~2~5~1 \rightarrow 1~4~2~5~3 \rightarrow 1~2~4~5~3 \rightarrow 1~2~3~5~4 \rightarrow 1~2~3~4~5$

【样例2】

​ 见下发文件。

【数据范围】

​ 对于 50%50\%的数据,满足 n5n \leq 5

​ 对于 80%80\% 的数据,满足n1000n \leq 1000

​ 对于 100%100\% 的数据,满足 1n1000001T51 \leq n \leq 100000,1 \leq T \leq 5

国庆欢乐赛3

Not Attended
Status
Done
Rule
OI
Problem
4
Start at
2024-10-5 14:00
End at
2024-10-5 17:30
Duration
3.5 hour(s)
Host
Partic.
36