首页 > 其他 > 详细

【bzoj1878】[SDOI2009]HH的项链

时间:2017-06-04 13:28:50      阅读:282      评论:0      收藏:0      [点我收藏+]

考虑非莫队的离线算法。。

若[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的项链

原文:http://www.cnblogs.com/supy/p/6940180.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!