【POJ2104 离线求区间K大数】划分树

区间k大数怎么看都是一个比较重口味的东西,一不小心就要树套树,麻烦的代码,繁琐的调试,考场上性价比非常低

于是这个问题就一直搁置在这里

突然,划分树的亮相让人眼前一亮,优美的性质,漂亮的复杂度,简洁的代码,怎么看怎么好

好了,进入正题。

这个划分树的核心还是利用归并的思想,预处理出所有归并的中间结果,和s[i,j],第i层前j个进入左子树的元素个数,有了这个,就在每层都可以O(1)的判断当前区间k大数进入了左子树还是右子树

总的时间复杂度是预处理O(nlogn),询问O(logn)

值得一提的是,在更新的时候下标的转化相当繁琐,一定要想清楚(最好背下来)

还有一个关键的图,转自http://www.notonlysuccess.com/?p=142

划分树

 

附代码

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值