概述
set
维护连续段。
1 | struct ADJ{ int l,r; mutable ll v; }; |
mutable
表示 $v$ 是可变的。spl
,将包含 $x$ 的区间 $[l,r]$,分裂成 $[l,x-1],[x,r]$,并返回 $[x,r]$ 对应的迭代器。s.erase(itl,itr)
删除 $[itl,itr)$ 的元素。s.insert()
返回一个pair
,first
是迭代器,second
是是否成功。cov
时先右再左。
若操作后立刻区间赋值,那么时间复杂度 $O(n\log n)$。若操作是随机的,那么时间复杂度 $O(n\log \log n)$。
例题
CF896C Willem, Chtholly and Seniorious
P7912 [CSP-J 2021] 小熊的果篮
链表维护连通块即可,时间复杂度均摊 $O(n)$。
CF444C DZY Loves Colors
可以势能线段树,或者珂朵莉树 + 区间加区间求和。
P5251 [LnOI2019] 第二代图灵机
操作三可以双指针,操作四也可以双指针。
P4690 [Ynoi Easy Round 2016] 镜中的昆虫
不修改就是求出 $pre_i$ 然后扫描线。
单点修改可以 cdq 分治。
区间修改发现 $pre$ 的总变化量为 $O(n)$,也可以 cdq 分治。
这题这么 nb,🤡 了。