AT_arc082_b.[ABC072D] Derangement

普及-

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

给定一个由 1,2,…,N1,2,\ldots,N 组成的排列 p1,p2,…,pNp_1,p_2,\ldots,p_N。你可以进行若干次(可以为 00 次)如下操作:

操作:选择排列中相邻的两个数并交换它们。

请通过若干次操作,使得对于任意的 1≤i≤N1\leq i\leq N,都满足 pi≠ip_i\neq i。请你求出所需操作的最小次数。

输入格式

输入通过标准输入按以下格式给出:

NN p1p_1 p2p_2 … pNp_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≤1052\leq N\leq 10^5
  • p1,p2,…,pNp_1,p_2,\ldots,p_N 是 1,2,…,N1,2,\ldots,N 的一个排列。

样例说明 1

将 11 与 44 交换,然后将 11 与 33 交换,排列变为 4,3,1,5,24,3,1,5,2,此时满足题目要求。这是所需的最少交换次数,因此答案为 22。

样例说明 2

只要交换 11 与 22 即可满足条件。

样例说明 3

初始排列已经满足条件。

由 ChatGPT 5 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页