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

本文介绍了一种名为划分树的数据结构及其应用。通过预处理实现快速查询区间k大数,具有O(nlogn)的预处理时间和O(logn)的查询时间。文章提供了详细的算法原理说明及其实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

好了,进入正题。

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

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

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

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

划分树

 

附代码

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值