【清华集训2014】mex

题意

有一个长度为 n 的数组a1,a2,...,an m 次询问,每次询问一个区间内最小没有出现过的自然数。

n,m200000,0ai109

解法

首先,我们可以发现,对于大于 n ai,我们可将它变成 n+1 ,这并不会影响最后的答案,证明显然。

那我们可以从前往后扫,用线段树维护每个自然数最后出现的位置,及一个区间内所有自然数最后出现的位置中最前的位置(前者是后者在叶子节点的体现)。那我们扫到一个位置,更新该位置自然数最后出现的位置,并处理右端点为该位置的询问。
对于一个左端点为 l 的询问,我们在线段树中查询,设当前结点的左端点lt lt 区间中自然数最前的位置 pos ,若 pos<l ,说明该区间内有自然数最晚出现的位置是在 l 前面,那么答案肯定就在这个区间内,我们就递归进lt查询。否则,我们递归进右子结点查询。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值