day10
给定一个序列A,求区间内最小未出现的自然数。
主席树O(nlogn)
思路
(话说这个$mex$计算不是在博弈求$sg$的吗……)
- 不妨用权值线段树维护区间内的数字出现位置的最小值,并且每次插入都维护当前数字出现位置。
- 那么由于查询的范围是$[l,r]$,可以知道如果左儿子的区间内,有数字最近出现的位置小于$l$,说明查询的区间$[l,r]$内不存在该值。
- 那么这道题就变成了一道喜闻乐见的模板题。
1 |
|
离线 + 权值线段树
思路
这个做法其实就是主席树的离线版本,而且由于离线处理,就不需要将权值线段树可持久化了。
- 首先对询问进行排序,然后剩下的部分就跟“主席树”思路一模一样了。
- 用权值线段树维护区间内的数字出现位置的最小值,并且每次插入都维护当前数字出现位置。
- 那么由于查询的范围是$[l,r]$,可以知道如果左儿子的区间内,有数字最近出现的位置小于$l$,说明查询的区间$[l,r]$内不存在该值。
1 |
|
分块
留坑。