AT_abc436_e.[ABC436E] Minimum Swap
普及/提高-
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
给定一个整数序列 P=(P1,P2,…,PN),它是 (1,2,…,N) 的一个排列。这里保证 P 不等于 (1,2,…,N)。
你希望执行以下操作零次或多次,使 P 匹配序列 (1,2,…,N):
- 选择一对满足 1≤i<j≤N 的整数 (i,j),交换 Pi 和 Pj 的值。
设 K 为使 P 匹配序列 (1,2,…,N) 所需的最小操作数。
求在 K 次操作中,可以作为第一个操作的操作数。两个操作被视为不同,当且仅当所选的整数对 (i,j) 不同。
输入格式
第一行一个整数 N。
第二行 N 个整数,表示 P1 P2 … PN。
输出格式
输出答案。
输入输出样例
输入#1
5 3 1 4 2 5
输出#1
6
输入#2
2 2 1
输出#2
1
输入#3
20 15 5 13 17 9 11 20 4 14 16 6 3 8 19 12 7 10 18 2 1
输出#3
77
说明/提示
样例解释 1
例如,目标可以在三步内实现:
- 选择 (i,j)=(1,2)。P 变为 (1,3,4,2,5)。
- 选择 (i,j)=(2,4)。P 变为 (1,2,4,3,5)。
- 选择 (i,j)=(3,4)。P 变为 (1,2,3,4,5)。
目标不能在两步或更少步骤内实现,因此 K=3。
如上所述,选择 (1,2) 作为第一步操作可以在三步内实现目标。此外,如果选择 (1,3),(1,4),(2,3),(2,4),(3,4) 中的任意一个作为第一步操作,通过适当执行后续两步操作,可以使 P 等于 (1,2,3,4,5)。
因此,输出 6。
数据范围
Constraints
-
2≤N≤3×105
-
1≤Pi≤N (1≤i≤N)
-
Pi=Pj (1≤i<j≤N)
-
所有输入值均为整数
输入解题思路,AI测评打分。不知道怎么写?