专栏文章

题解:AT_abc428_f [ABC428F] Pyramid Alignment

AT_abc428_f题解参与者 2已保存评论 2

文章操作

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

当前评论
2 条
当前快照
1 份
快照标识符
@min5g7pt
此快照首次捕获于
2025/12/01 20:52
3 个月前
此快照最后确认于
2025/12/01 20:52
3 个月前
查看原文
不用线段树。
首先发现两个区间必定是包含关系。不难想到二分。
考虑一个操作 vv 会删除所有 v\le v 的操作,因此单调栈维护。
以栈内元素把区间分段,先二分属于哪段,再二分在该段内的位置。
考虑二分第一个。需要维护栈内区间左端点。
(具体地,考虑栈插入时左端点从上一个元素转移,加上一次对齐的偏移量,类似前缀和。)
考虑二分第二个。这些区间与对应的栈内元素对齐,简单推下此时区间的左右端点即可。
note
具体地,如何维护栈:
插入元素并删除完之后,如果剩下的操作种类和当前一样,显然忽略当前操作。
此时,相邻元素的操作种类不同。可以考虑偶下标维护 ll 操作。
注意 v=nv=n 操作是否会使得维护的奇偶性破坏。

评论

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

正在加载评论...