码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-02-16 09:19:36      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:inline   求和   排序   树状   位置   不用   相同   mat   在线   

区间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 && 区间元素种数

标签:inline   求和   排序   树状   位置   不用   相同   mat   在线   

原文地址:https://www.cnblogs.com/ubospica/p/10386707.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!