欢迎来到起遇信息学
起遇信息学正处于上线筹建阶段,以下功能已全部开放免费体验: ✅ 完整题库浏览与代码提交评测(C / C++ / Python / Java 等) ✅ 入门到进阶的系列课程试读、作业与考试 ✅ AI 提示、AI 作业分析等智能助教功能 ✅ 赛事模拟与个人能力报告 ✅ 邮箱注册开放 ⏳ 付费课程订阅与微信/支付宝支付通道 ⏳ 手机号登录,微信扫码登录、微信公众号绑定 使用中如遇任何问题,欢迎通过页面底部 **"联系我们"** 与我们沟通。
S42102.21-2 计点交换
21-2 计点交换
计点交换
盲区驱散了,但Echo-0的信息迷宫里还有一个计数问题——交换。
"交换?"CC问。
"对。"你说,"给定一个排列,每次可以交换相邻两个元素。求把它变成有序的最少交换次数。"
"最少?"
"对。"你说,"这就是逆序对个数——每个逆序对至少要交换一次。"
"逆序对?"
"对。"你说,"如果但,就是一个逆序对。"
"咋算?"
"树状数组或归并排序。"你说,"。"
"树状数组?"
"对。"你说,"从左到右扫描,查询之前比当前元素大的个数,累加起来。"
"第47个元素。"你说,"值为47——它前面有46个元素,都比它小,所以没有逆序对。"
"那47后面呢?"
"如果后面有比47小的,就有逆序对。"你说,"但如果没有——逆序对就是0。"
"简单。"
"对。"你说,"但整个排列的逆序对可能很多。"
"最多多少?"
"。"你说,"完全逆序的排列。"
"。"
"对。"你说,"1081次交换。"
CC数了数——1081。
"好多。"她说。
"对。"你说,"但我们可以一步步来。"
"一步多少?"
"一次交换解决一个逆序对。"你说,"1081步,就是有序。"
"像整理房间。"
"对。"你说,"像整理房间——乱的东西,一件一件归位。"
Echo看着交换的过程——像洗牌,像整理记忆,像某种失序的东西重新排列。
"以前我的记忆是乱的。"她说,"现在……在归位。"
"因为有我们帮你。"你说。
"对。"她说,"因为有你们。"
题目描述
给定一个到的排列,求逆序对个数(最少相邻交换次数)。
输入格式
第一行。第二行个整数。
输出格式
逆序对个数。
输入样例
5
输出样例
1
1
1
1
1
提示
- 树状数组或归并排序求逆序对。
- 树状数组:扫描时查询的和。
- 时间复杂度。
在线编程 IDE
建议全屏模式获得最佳体验
| 进入全屏编程 | Alt+E |
| 递交评测 | Ctrl+Enter |
| 注释/取消注释 | Ctrl+/ |
| 缩放字体 | Ctrl+滚轮 |