bzoj1878[SDOI2009]HH的项链
Posted 翠竹叶飞
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bzoj1878[SDOI2009]HH的项链相关的知识,希望对你有一定的参考价值。
考虑非莫队的离线算法。。
若[l,r]中有重复数值很麻烦,考虑取一个数为代表(最左或最右)
1.最左:用BIT,先把所有第一个出现的数扔进去,将询问左端点升序,每次都可能产生历史的无用点,并出现新的“第1次出现点”,只需将其加入BIT即可。
2.最右,做法类似
当然有在线做法了(copy),
考虑区间查询l~r之间的颜色种数,其实就是求所有满足(l<=i<=r,next[i]>r)的个数,因为如果某个点的next已近超出了这个区间的范围,就说明这个点对答案产生贡献了。
这个时候问题就已近被转化为给定一个序列,求区间l~r之间权值大于r的个数。
那么我们对于每个点都在可持久化的权值线段树中构造一条新的线段树链就好了,查询就是常规的权值线段树的查询。
对于每个点都要新建一条最多Log2 N个点的链,空间复杂度N log2 N;对于每次询问最多递归深度为Log2 N层,时间复杂度M Log2 N。
以上是关于bzoj1878[SDOI2009]HH的项链的主要内容,如果未能解决你的问题,请参考以下文章
[bzoj1878] [SDOI2009]HH的项链(树状数组+离线)