B. 切割次数(cut)

    传统题 文件IO:cut 1000ms 256MiB

切割次数(cut)

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目描述

小明刚刚学会了数列的排序,现在他有一个长度为 nn 的排列 pp ,他认为 pp 必须是有序的,所以他打算将其进行排序。

他可以对这个排列进行如下操作:

  • 将这个排列切割成若干个序列(也可以不切割,保持原样),每个序列至少含有一个元素;
  • 选择其中一些序列并将它们翻转;
  • 将这些序列按照他的意愿重新组合拼接得到一个新的排列。

小明觉得切割操作太累了,他想知道如果必须把这个排列变得有序,至少需要切割多少次。

  • 一个长度为 nn 的排列的定义为,包含从 11nnnn 个不同的整数的序列,每个整数恰好出现一次。
  • 序列翻转的定义为,假设存在一个长度为 mm 的序列 [a1,a2,...,am1,am][a_1, a_2, ..., a_{m-1}, a_m],那么将这个序列翻转后将会得到 [am,am1,...,a2,a1][a_m, a_{m-1}, ..., a_2, a_1]

输入格式

第一行包含一个整数 nn,表示排列 pp 的长度。

第二行包含 nn 个整数,其中第 ii 个整数定义为 pip_i。保证输入的 pp 一定是长度为 nn 的排列。

输出格式

输出一个整数,表示将排列 pp 变得有序所需的最少切割次数。

样例数据

5
1 2 3 5 4
1
3
3 2 1
0

大样例

P1550_3.in / P1550_3.out

数据范围

对于 20%20\% 的数据,1n101\le n \le 10

对于 50%50\% 的数据,1n1001\le n \le 100

对于 70%70\% 的数据,1n100001\le n \le 10000

对于 100%100\% 的数据,1n1061\le n \le 10^6

2024年CSP-J复赛模拟 03

未参加
状态
已结束
规则
OI
题目
4
开始于
2024-10-17 0:00
结束于
2024-10-18 9:00
持续时间
3.5 小时
主持人
参赛人数
7