[COCI2010-2011#2] KNJIGE
题目描述
Mirko 有一个由 n n n 本书组成的家庭图书馆, n n n 本书在一个狭窄的橱柜中一个接一个地排列。由于在上一任务中对字母进行了很好的训练,他现在希望按字母顺序排列书籍,以使书名字典序排第一的书排在最后,而字典序排最后的书在书橱的底部。
Mirko 可以轻松地将书从书橱中拉出,但是很难将其推回书橱中,因此只能将书放回到书橱的顶部。因此,将书排序籍的唯一可用方法是反复将书籍从书橱中拉出并将其放在书橱的顶部。
这些书按字母顺序用从 1 1 1 到 n n n 的整数标记。因此,Mirko 希望从顶部开始将它们排序为 ( 1 , 2 , ⋯ , n ) (1,2, \cdots ,n) (1,2,⋯,n)。例如,如果 n = 3 n = 3 n=3 且开始顺序为 ( 3 , 2 , 1 ) (3,2,1) (3,2,1),则两步就足够了。首先,他拉出编号为 2 2 2 的书并将其放在最上面,这样书的顺序便变成 ( 2 , 3 , 1 ) (2,3,1) (2,3,1)。之后,他对编号为 1 1 1 的书执行相同操作,因此书的顺序变成 ( 1 , 2 , 3 ) (1,2,3) (1,2,3)。
计算给定起始顺序,排序完毕所需的最少移动次数。
输入格式
第一行一个整数 n n n,具体含义请见题目描述。
接下来 n n n 行,每行一个正整数,表示书籍的初始摆放顺序。
输出格式
一行一个整数,表示使书籍按照自然数顺序排列所需的最小移动步数。
样例 #1
样例输入 #1
3
3
2
1
样例输出 #1
2
样例 #2
样例输入 #2
4
1
3
4
2
样例输出 #2
2
提示
数据规模与约定
对于 100 % 100\% 100% 的数据,保证 1 ≤ n ≤ 3 × 1 0 5 1 \leq n \leq 3 \times 10^5 1≤n≤3×105,书籍的初始摆放顺序为 1 … n 1\ldots n 1…n 的一个排列。
说明
-
本题满分 80 80 80 分。
-
题目译自 COCI2010-2011 CONTEST #2 KNJIGE,译者 @mnesia。
Scratch实现
后续
接下来我会不断用scratch来实现信奥比赛中的算法题、Scratch考级编程题实现、白名单赛事考题实现,感兴趣的请关注,我后续将继续分享相关内容