专栏文章
题解:AT_abc431_g [ABC431G] One Time Swap 2
AT_abc431_g题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @min9ow1s
- 此快照首次捕获于
- 2025/12/01 22:51 3 个月前
- 此快照最后确认于
- 2025/12/01 22:51 3 个月前
前情提要
不喜欢语言学的信息学奥赛生小 W 在今晚的 ABC 中扔掉 EF 猛攻 G 题最后得到了高达 1351 的 perf。在这次经历后小 W 和不喜欢字符串一样不喜欢平衡树。
解题思路
我们考虑交换这一操作的性质,可以将 分三类:
- 这会使其字典序变小。 越小,新序列的字典序越小,对于 相等的 越小字典序越小。
- 这不会改变字典序。其数目为 。
- 这会使其字典序变大。 越小,新序列的字典序越大,对于 相等的 越大字典序越大。
所以我们可以把所有询问离线下来并排序,一边统计一边求答案。具体地:我们维护当前类别的某个 有多少个 符合要求,同时为在这一范围内的询问分配对应排名的 。这个过程可以被转化为:插入或删除一个数、求一个数的排名、求排名为 的数。用一个平衡树维护即可。
要注意的是本体要输出的是具体的位置而非交换的数值,我们可以在插入数的时候将这个数乘上一个大数再加上它的位置,这样就可以按照数值第一关键字地址第二关键字排序了!改变正负号就可以选择升序降序。
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...