[模板] 区间mex && 区间元素种数

Posted ubospica

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[模板] 区间mex && 区间元素种数相关的知识,希望对你有一定的参考价值。

区间mex

问题

给定序列({a_i}), 每次询问给出(l), (r), 询问 (mex {a_i}, i in {l, l+1, cdots r})

解法 (在线)

对于每个元素, 用 (v_i) 表示它最后一次出现的位置.

考虑到是区间询问, 使用主席树维护 (v_i) .

那么答案就是: 第 (r) 棵线段树上, 最小的 (v_i < l) 的值. 线段树上二分即可.

或者可以离线询问, 对 (r) 排序, 然后用线段树维护.

区间元素种数

问题

给定序列({a_i}), 每次询问给出(l), (r), 询问 (card {a_i}, i in {l, l+1, cdots r}), 其中(card(S))表示集合(S)的元素个数. (相同元素记做一次)

解法

莫队 (离线)

不用说了吧... 板子题, 参考hh的项链.

主席树 (在线)

类似区间mex, 用 (v_i) 表示它最后一次出现的位置, 用主席树维护.

答案就是: 第 (r) 棵线段树上, (l le v_i le r) 的值的个数. 这显然是区间求和.

同样, 可以离线询问, 对 (r) 排序, 然后用树状数组/线段树维护.

以上是关于[模板] 区间mex && 区间元素种数的主要内容,如果未能解决你的问题,请参考以下文章

#381 Div2 Problem C Alyona and mex (思维 && 构造)

线段树模板——区间乘 && 区间加 && 区间求和

「模板」 线段树——区间乘 && 区间加 && 区间求和

BZOJ3339&&3585 Rmq Problem&&mex

luogu P3372ybtoj线段树课堂过关例题2区间查改 &模板线段树 1

luogu P3865ybtojRMQ问题课堂过关模板ST 表 &例题1数列区间