zoukankan      html  css  js  c++  java
  • [模板] 区间mex && 区间元素种数

    区间mex

    问题

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

    解法 (在线)

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

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

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

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

    区间元素种数

    问题

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

    解法

    莫队 (离线)

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

    主席树 (在线)

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

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

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

  • 相关阅读:
    i春秋xss平台
    i春秋exec
    bugku 你必须让他停下
    bugku 域名解析
    bugku web3
    bugku 矛盾
    (转)ubuntu下怎么放wifi热点给andriod设备
    (转)如何在 ubuntu 下使用 iNode 客户端
    博客更新啦!!
    HDU 5351 MZL's Border (多校联合第5场1009)
  • 原文地址:https://www.cnblogs.com/ubospica/p/10386707.html
Copyright © 2011-2022 走看看