专栏文章

P2824 [HEOI2016/TJOI2016] 排序 题解

个人记录参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@miql7ubz
此快照首次捕获于
2025/12/04 06:37
3 个月前
此快照最后确认于
2025/12/04 06:37
3 个月前
查看原文
题意: 给定长度为 nn 的排列,接下 mm 次操作,每次将下标 [lil_i,rir_i] 升序或者降序排序,求所有操作完成后的下标 qq 的值。
n,m<=105n,m<=10^5
如果直接使用数据结构维护的话,要维护的值的种数太多,且很难pushup_down,考虑能否通过判断确定 aqa_q 的范围。如果目前考虑一个值 xx,怎么判断 xxaqa_q 的大小关系?考虑简化序列,因为只需要确定大小关系,可以将大于等于 xx 的数赋为 11,小于的为 00,那么序列变成了 0/1 序列,对于每次排序将 11 放最后就可以了,由于值域小,这个可以拿线段树维护。最后在 qq 位置上的值为 11 就是 x<=aqx<=a_q,否则大。我们发现这具有单调性,于是直接二分 check 就完了。
至于时间复杂度:二分 O(log),离线操作 O(mlog),总的是 O(m×log2nm\times log^2 n)。

评论

0 条评论,欢迎与作者交流。

正在加载评论...