#swap. 2026提高组模拟赛18-T1 归位

2026提高组模拟赛18-T1 归位

时间限制:1000ms 内存限制:512MB

项目 内容
输入文件名 swap.in
输出文件名 swap.out
可执行文件名 swap
每个测试点时限 1.0 秒
内存限制 512 MiB
测试点数目 20
是否等分 是

结果比较方式为全文比较(过滤行末空格及文末换行)。

题目描述

档案室有一排 nn 个格子,格子从左到右编号为 1∼n1\sim n,第 ii 个格子里放着一盒编号为 pip_i 的档案盒。档案盒的编号互不相同,恰好是 1∼n1\sim n,只是放乱了顺序。

按档案管理规定,整排最终应当恢复为:第 ii 个格子里放着编号 ii 的档案盒。整理时允许的操作只有一种:选择两个相邻的格子,把这两格中的档案盒交换位置。每进行一次这样的操作,参与交换的两盒档案盒各被「动过」一次。

整个整理过程中,每个档案盒被动过的总次数不能超过 kk。管理员想知道两件事:如果当前限制 kk 下能把整排整理成目标顺序,最少需要多少次操作;如果当前限制下无法完成,那么至少要把被动次数上限放宽到多少才能完成整理(即最小的可行上限 k∗k^*)。

输入格式

从文件 swap.in 中读入数据。

第一行两个整数 n,kn, k。

第二行 nn 个整数 p1,p2,…,pnp_1, p_2, \dots, p_n,表示初始时第 1∼n1\sim n 个格子里的档案盒编号。

输出格式

输出到文件 swap.out 中。

输出一行一个整数:若能在限制下整理成目标顺序,输出最少操作次数;否则输出最小的可行上限 k∗k^*。

样例

样例 1

输入:

4 2
2 1 4 3

输出:

2

解释:交换第 1,21,2 格(盒 22 与盒 11 各被动 11 次),再交换第 3,43,4 格(盒 44 与盒 33 各被动 11 次)。两次操作后排列变为 1,2,3,41,2,3,4,四盒被动次数均为 11,不超过 k=2k=2。

样例 2

输入:

3 1
3 2 1

输出:

2

解释:盒 11 初始在第 33 格,目标位置是第 11 格,中间隔着两个格子,它至少要被移动 22 次,超过 k=1k=1,当前限制下无法完成。把被动次数上限放宽到 22 后即可完成整理,因此输出 22。

样例 3

输入:

6 3
3 1 2 6 5 4

输出:

5

解释:可按如下顺序操作(方括号内为操作后的排列):

  1. 交换第 1,21,2 格:[1,3,2,6,5,4][1,3,2,6,5,4],盒 33、盒 11 各被动 11 次;
  2. 交换第 2,32,3 格:[1,2,3,6,5,4][1,2,3,6,5,4],盒 33、盒 22 各被动 11 次;
  3. 交换第 4,54,5 格:[1,2,3,5,6,4][1,2,3,5,6,4],盒 66、盒 55 各被动 11 次;
  4. 交换第 5,65,6 格:[1,2,3,5,4,6][1,2,3,5,4,6],盒 66、盒 44 各被动 11 次;
  5. 交换第 4,54,5 格:[1,2,3,4,5,6][1,2,3,4,5,6],盒 55、盒 44 各被动 11 次。

五次操作后排列归位。各盒被动总次数:盒 1,21,2 各 11 次,盒 3,4,5,63,4,5,6 各 22 次,均不超过 k=3k=3。

数据范围

对于所有测试数据,保证 1≤n≤2×1051 \le n \le 2\times 10^5,0≤k≤n0 \le k \le n,p1,…,pnp_1,\dots,p_n 是 1∼n1\sim n 的一个排列。

测试点编号 n≤n \le kk 特殊性质
1 ~ 3 1010 ≤n\le n 无
4 ~ 8 50005000
9 ~ 11 2×1052\times 10^5 ≥n−1\ge n-1 A
12 ~ 14 ≤1\le 1 B
15 ~ 20 ≤n\le n 无
  • 特殊性质 A:k≥n−1k \ge n-1。
  • 特殊性质 B:k≤1k \le 1。
难度 普及+/提高-
通过率 37.5%
尝试 8
通过 3
ID
703
类型
传统题
Time Limit
1000ms
Memory Limit
512MiB
上传者

相关

在下列比赛中:

暑假CSP-S模拟赛 第3场