提供全方位、多语种的编程教程,助您从零基础到进阶开发。
编程教程 - 视频网课
编程教程 - 题解博客
编程教程 - Python数据处理Pandas库教程
编程教程 - 编程教辅指南
编程教程 - 编程问答
编程教程 - MySQL教程
编程教程 - JavaScript教程
编程教程 - Web网站搭建与管理
编程教程 - MCI多媒体编程
编程教程 - C语言图形编程
编程教程 - CSS教程
编程教程 - HTML教程
编程教程 - 算法竞赛教程
编程教程 - 趣味项目教程
编程教程 - ACM与蓝桥杯竞赛指南
编程教程 - Socket套接字编程
编程教程 - Linux命令
编程教程 - Java教程
编程教程 - C语言函数库
编程教程 - 编译器教程
编程教程 - Python教程
编程教程 - 单片机教程
编程教程 - 数据结构教程
编程教程 - C++教程
编程教程 - C语言教程
编程教程 - 计算机二级C语言
编程教程 - QT开发
编程教程 - 代码模板
编程教程 - STL库教程
编程教程 - MySQL函数库(超级全面)
编程教程 - PHP教程
编程教程 - Docker教程
编程教程 - 全部教程
提供海量题库,算法实践和真题,包括蓝桥杯历年真题、数据结构算法以及书籍配套习题等等,并已按照章节顺序编排,系统化提升您的编程能力。
编程训练 - 蓝桥杯真题
编程训练 - 编程零基础习题
编程训练 - 数据结构配套题
编程训练 - 信息学一本通 C/C++ 基础
编程训练 - 信息学一本通 基础算法
编程训练 - ACM 蓝桥杯竞赛入门
编程训练 - OpenJudge 题库
编程训练 - Java 程序设计配套习题
编程训练 - 信息学一本通 数据结构
编程训练 - Python 入门编程题库
编程训练 - 谭浩强 C 语言课后习题
编程训练 - Python程序设计配套习题
编程训练 - 信息学一本通提高篇
编程训练 - 凌云训练
编程训练 - 全部编程训练
编程训练 - 全部题目
提供包括C语言、C++、Java、Python等编程语言的试卷,还包括计算机二级、408考研等历年真题,模拟真实考试,检验学习成果。
编程考试 - C语言试卷
编程考试 - C++试卷
编程考试 - CSP考试
编程考试 - 数据结构与算法
编程考试 - 计算机二级
编程考试 - Java试卷
编程考试 - 考研真题
编程考试 - Linux
编程考试 - Mysql数据库
编程考试 - 计算机网络
编程考试 - NOIP真题
编程考试 - Python试卷
编程考试 - 高校题库
编程考试 - 人工智能
编程考试 - 软件工程
编程考试 - 全部试卷
老师可创建编程比赛、组建团队、进行自主或标准比赛,实现高效编程教学管理。
强大的AI编程辅助工具,支持代码解释、语言转换、查错与生成等功能。
在一个偏远的图书馆里,有个书架上放着 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 各不相同。