| 题目名称 | 4454. sort |
|---|---|
| 输入输出 | sorttros.in/out |
| 难度等级 | ★★★ |
| 时间限制 | 300 ms (0.3 s) |
| 内存限制 | 512 MiB |
| 测试数据 | 25 |
| 题目来源 |
|
| 开放分组 | 全部用户 |
| 提交状态 | |
| 分类标签 | |
| 查看题解 | 分享题解 |
| 通过:14, 提交:39, 通过率:35.9% | ||||
|
|
100 | 0.927 s | 6.72 MiB | C++ |
|
|
100 | 0.958 s | 4.69 MiB | C++ |
|
|
100 | 0.972 s | 4.72 MiB | C++ |
|
|
100 | 0.973 s | 5.72 MiB | C++ |
|
|
100 | 0.985 s | 5.69 MiB | C++ |
|
|
100 | 0.985 s | 5.70 MiB | C++ |
|
|
100 | 0.992 s | 5.74 MiB | C++ |
|
|
100 | 1.006 s | 5.72 MiB | C++ |
|
|
100 | 1.009 s | 5.72 MiB | C++ |
|
|
100 | 1.022 s | 10.76 MiB | C++ |
| 本题关联比赛 | |||
| 2026.8.26 | |||
| 关于 sort 的近10条评论(全部评论) | ||||
|---|---|---|---|---|
|
原题 https://www.luogu.com.cn/problem/P16996
2026-08-26 17:18
1楼
| ||||
传闻有一种神奇的排序算法:奇迹排序。
只需要把待排序的数组放在那里,等待一束宇宙射线射向数组,使数组自动排好序。
可惜的是,这个算法的时间复杂度太大了,所以还是来研究冒泡排序吧。
给定一个 $1\sim n$ 的排列,下标从 $1$ 开始,现在又一段对 $a$ 进行冒泡排序的伪代码。
01: Algorithm BubbleSort(a, n) 02: for i ← 1 to n do 03: for j ← 1 to n - i do 04: if a[j] > a[j + 1] then 05: Swap(a[j], a[j + 1]) 06: end if 07: end for 08: end for 09: end Algorithm
由于宇宙射线的影响,导致第 4 行的 if 语句在执行时,恰好有一次其的执行结果相反(即执行相反的分支)。
现在给出 $n,a$,求出在宇宙射线影响下,运行 BubbleSort(a,n) 后,本质不同的 $a$ 的个数(称两个排列 $p,q$ 本质不同,当且仅当存在 $ i\in [1,n],p_i\ne q_i$)。
第一行,一个正整数 $n$。
第二行,$n$ 个用空格隔开的正整数,表示排列 $a$。
一行,一个正整数,表示答案。
3 2 3 1
3
5 1 4 2 3 5
5
对于第一个样例,可能的 $a$ 有:$[1,3,2],[2,3,1],[2,1,3]$。
大样例。
| 测试点编号 | $n\le$ | 特殊性质 |
|---|---|---|
| $1\sim 2$ | $10$ | 无 |
| $3\sim 4$ | $100$ | 无 |
| $5\sim 8$ | $400$ | 无 |
| $9\sim 13$ | $4000$ | 有 |
| $14\sim 15$ | $10^5$ | 有 |
| $16\sim 18$ | $2\times10^5$ | 无 |
| $19\sim 21$ | $5\times10^5$ | 无 |
| $22\sim 25$ | $2\times10^6$ | 无 |
在此键入。