首页 > 编程语言 > 详细

主席树套树状数组——带修区间第k大zoj2112

时间:2019-04-24 22:32:41      阅读:217      评论:0      收藏:0      [点我收藏+]
主席树带修第k大 
https://www.cnblogs.com/Empress/p/4659824.html 讲的非常好的博客

首先按静态第k大建立起一组权值线段树(主席树) 然后现在要将第i个值从a改为b, 由主席树前缀和的性质可知修改第i个值会对T[i]...T[n]棵权值线段树造成相同的影响 如果暴力进行维护必定超时 那么如何优化这种修改? 我们知道动态维护前缀和可以用bit在log时间内完成 那么对于动态维护具有前缀和性质的主席树,我们也可以套上bit来完成 update:将第i个值从a改成b 根据bit的原理,第i个元素的修改会影响第i+lowbit(i)个元素 那么现在第i棵树修改了,第i+lowbit(i)棵树也应该影响 即第i棵树的位置a -1,同样的第i+lowbit(i)棵树的位置a -1 同理这批树的位置b +1即可 query:询问区间[l,r]第k大元素 即求T[r]-T[l]的前缀和即可 查询时要把bit对应的修改套上

主席树套树状数组——带修区间第k大zoj2112

原文:https://www.cnblogs.com/zsben991126/p/10765363.html

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