在一个偏远的图书馆里,有个书架上放着 n 本书,每本书上都标有一个从 1 到 n 的唯一编号。 按照规矩,这些书应该按编号从小到大依次排列:1 号书位于最左端,2 号 书紧随其后,以此类推,直到 n 号书在最右端。这样的顺序不仅看起来整齐, 也方便读者快速找到想借的书。 可昨天店里人来人往,借书还书忙得不可开交,书架上的顺序出现了错乱。 现在,书架上的书变成了 a = (a1, a2, . . . , an ),其中 ai 表示第 i 个位置上的书编 号。 管理员决定动手整理书架,但时间有限,他希望用最少的操作把书的顺 序恢复到正确的排列。每次操作,他可以挑选书架上任意两本书,交换它们 的位置。例如,如果当前排列是 (3, 1, 2) ,他可以交换第 1 本和第 2 本,得到 (1, 3, 2) ,再交换第 2 本和第 3 本,得到 (1, 2, 3) 。 你的任务是帮助管理员计算,最少需要进行多少次操作,才能让书架上的 书的编号排列变为 (1, 2, . . . , n) 。
输入的第一行包含一个正整数 n ,表示书架上书的总数。
第二行包含 n 个正整数 a1, a2, · · · , an ,相邻整数之间使用一个空格分隔, 依次表示当前书架上每本书的编号。a1, a2, . . . , an 是一个 1 到 n 的排列。
输出一行包含一个整数表示答案,即将书架上的书恢复到正确排列所需的 最少操作次数。
3 3 1 2
2
【评测用例规模与约定】
对于 30% 的评测用例,1 ≤ n ≤ 103 ,1 ≤ ai ≤ n ,a1, a2, . . . , an 各不相同;
对于所有评测用例,1 ≤ n ≤ 106 ,1 ≤ ai ≤ n ,a1, a2, . . . , an 各不相同。
试题 A: 攻击次数 (本题总分:5 分)
【问题描述】
小蓝正在玩一个游戏,游戏中小蓝要控制自己的三个英雄来攻击一个敌人。 敌人初始的血量为 2025 。
小蓝的第一个英雄攻击力恒定,每回合攻击 5 的血量。
小蓝的第二个英雄拥有一些技能,奇数回合触发,攻击 15 的血量,偶数回 合攻击 2 的血量。
小蓝的第三个英雄拥有一些道具,当回合数除以 3 的余数为 1 时攻击 2 的血量;当回合数除以 3 的余数为 2 时攻击 10 的血量;当回合数除以 3 的余数 为 0 时攻击 7 的血量。
游戏从第 1 回合开始。不考虑敌人对小蓝英雄的攻击,敌人的血量也仅受 攻击的影响。如果敌人的血量小于等于零,则游戏结束。
请问到第几回合游戏结束?
【答案提交】 这是一道结果填空题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
试题 B: 最长字符串 (本题总分:5 分)
【问题描述】
小蓝手里有一个单词本,上面记录了一些单词,保存在 words.txt(words.txt下载链接) 中, 其中每一行包含一个仅有小写英文字母组成的单词。
小蓝想要找到一个最长的优美字符串。
一个长度为 n 的字符串 s = c1c2 · · · cn 是优美字符串,必须满足 s 在单词本 中,且满足以下两个条件之一:
1) n = 1 ;
2) n > 1 ,且存在一个优美字符串 s ′ ,s ′ 的长度为 n − 1 ,s ′ 的字符调整顺 序后与 c1c2 · · · cn−1 一致。
示例,假设 words.txt 文件中的单词如下:b 、bc 、cbd 、dbca ,那 么:
s1 =b ,长度 1 ,是优美字符串;
s2 =bc ,s ′ = b 在单词本中出现过,并且是优美字符串,所以 s2 是优美字符串;
s3 =cbd ,s ′ = bc 在单词本中出现过,并且是优美字符串,所以 s3 是优美 字符串;
s4 =dbca ,s ′ = cbd 在单词本中出现过,并且是优美字符串,所以 s4 是 优美字符串;
现在请你帮助小蓝从单词本 words.txt 中找出长度最大的优美字符串, 如果存在多个答案,优先使用字典序最小的那一个作为答案。
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一 个字符串,在提交答案时只填写这个字符串,填写多余的内容将无法得分。