传统题 1000ms 256MiB

Rotate

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

Rotate

题目背景

c++c++ 中有一个函数叫 rotaterotate ,内容如下:

rotate(first,middle,last)rotate(\,first,\,middle,\,last\,)

功能是将一个序列中的 [first,middle)[\, first,\quad middle\,)[middle,last)[\, middle,\quad last\, ) 部分互换。

例如对于序列

v[]={12345}v[\,\,\,]= \{ 1\, 2\, 3\, 4\, 5 \} ,进行操作 rotate(v,v+2,v+5)rotate(\, v,\, v+2,\, v+5) ,会得到:v[]={34512}v[\,\,\,]= \{ 3\, 4\, 5\, 1\, 2 \}

题目内容

现给定一个由 1n 1 \sim n 组成的序列,请问最少需要多少次 rotaterotate 操作才能将给定序列转换为 {1,2,3,n} \{ 1,2,3,……,n\}

输入格式

第一行一个整数 nn ,表示序列长度。

第二行 n n 个整数,表示给定序列。

输出格式

一个整数,表示需要的最少操作数。

测试样例

输入
8
8 1 3 5 2 6 4 7
输出
3

数据范围

1<n2e61<n\leq 2e6

2024秋悬赏令第五周

未参加
状态
已结束
规则
IOI
题目
6
开始于
2024-11-10 18:00
结束于
2024-11-17 18:00
持续时间
168 小时
主持人
参赛人数
59