ARC160A Reverse and Count 题解

ARC160A

最暴力的想法是直接将所有能表示出的排列排序,时间复杂度 $\mathcal{O}(n^2\log n)$,显然无法通过。

考虑将所有能表示出的排列按字典序依次枚举。

令 $i$ 之前的排列不变。发现当 $a_i \neq i$ 时,排列 $\dots i \dots$ 只会有 $1$ 的贡献。当 $a_i = i$ 时,会有 $\frac{(n - i)\times(n - i - 1)}{2} + n$ 种排列,如果这个值与之前的值加起来 $> k$,就令 $i = i + 1$ 继续做,如果 $= k$ 就直接输出。

还有一种做法就是直接用 nth_element。

时间复杂度:$\mathcal{O}(n ^ 2)$

代码就不放了。

posted @ 2023-05-25 22:18  Pengzt  阅读(1)  评论(0编辑  收藏  举报  来源