想要知道 [ L , R ] [L,R] [L,R]区间中不同的数是多少
设 w [ i ] w[i] w[i]是区间中第 i i i个数 x x x上一次出现的位置
如果 w [ i ] < L w[i]<L w[i]<L,那么答案+1
我们用 [ L , R ] [L,R] [L,R]这一段的 w [ i ] w[i] w[i]来建立一个权值线段树,然后问询这个权值线段树中 [ 1 , L − 1 ] [1,L-1] [1,L−1],就可以得到答案
但问询很多,显然我们不能一次问询建一次线段树。
所以可以用可持久化线段树来实现
同时为了防止出现0,所以 w [ i ] w[i] w[i]均+1
https://ac.nowcoder.com/acm/problem/20325
#

最低0.47元/天 解锁文章
410

被折叠的 条评论
为什么被折叠?



