【BZOJ 2653】middle 主席树好题推荐

谈谈这一道题的最强烈的感受在于,我的主席树入门是经典题目区间第k大树查询(当然,因为poj上不会强制在线,还用树套树和整体二分写过那道题),因此,对于主席树的理解仅仅是一个区间历史版本维护的理解,即类似于树套树的外层区间树内层全值树。但是忽略了主席树的真正伟大之处在于可持久化,而可持久化的也能是权值。

对于这一道题,由于我们不知道中位数是多少,因此考虑二分,而关键之处在于如何二分cheak,可以这样,把所有大于这个数的数定义为1,而小于这个数的定义为-1,那么只要一段区间区间和大于等于0就说明当前值是可行的,继续二分,关键就在于如何快速得到一段区间的最大和。最简单的思想是对于每一次的询问,我On的一次处理,把比他大的赋值为1,小的赋值为-1,然后可以利用线段树维护区间最大和得到,然后进一步思考,发现每一次都On赋值肯定受不老,那么思考树套树,对于没一个权值(离散化后)都建立一个区间树,这个树就储存每一个位置是-1,还是1,但是还是受不了,不够思想已经很接近了,我们继续观察可以发现,其实每一个权值对于上一个权值来说的相对状态只有一个数不同,我们先按权值排序,然后主席树的每一个叶子节点都是1(对于最小的数来说其他数都比他大),然后不断插入更大取值的节点,不断更新这个主席树,最后就得到一个类似于外层权值树内层区间树的主席树,不过充分利用了先前的信息,这就是可持久化操作的美妙之处了把。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值