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

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

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

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

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

题目描述

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

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

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

输入格式

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

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

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

输出格式

输出到文件 swap.out 中。

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

样例

样例 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,211 次,盒 3,4,5,63,4,5,622 次,均不超过 k=3k=3

数据范围

对于所有测试数据,保证 1n2×1051 \le n \le 2\times 10^50kn0 \le k \le np1,,pnp_1,\dots,p_n1n1\sim n 的一个排列。

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

相关

在下列比赛中:

暑假CSP-S模拟赛 第3场