线段树-树状数组专辑[建设中]

前略

线段树(以下简称ST)这种高端大气上档次的东西,用法和树状数组(以下简称BIT)一样非常灵活,一个简单比较如下:

  • ST和BIT都要求运算符能够支持交换律结合律。由于ST可以真正细化到每一个子区间,所以满足区间减法的运算符也可以在线段树上跑,但是BIT就不行。所以,一般来说BIT不支持与或非和最值运算符。
  • 对于高维扩展,BIT的优势实在是致命性的,时空+编码复杂度甩ST几条大街。
  • 但是基本操作上面,BIT的insert和query不能同时支持区间操作很是拙计。虽然有用两个BIT同时实现两个区间操作的方法,但是实现过程略麻烦细节略多容易抽,所以在不严格卡时空的题上面一般不用。ST能同时做到也是付出了空间消耗至少为BIT两倍(实际是大于len(L,R)的最大2的幂次)的代价,实现细节同样也较多,在一些题目中需要精心设计add,down,up这类辅助函数来合并拆分区间传递维护恰如其分的lazy。ST的核心思想是二分+lazy,把事情推到最后迫不得已恰到好处的时候再做,不提早(否则TLE),不推迟(否则WA)。
  • 直接挂在树上的二分查找来看,BIT实现起来较为简单但是思维难度略高,但是由于区间减法的原因,对于能否二分限制很大,通常对于不满足区间减法的运算符就只能采用固定起点打死不用减法的办法来妥协了。ST的话虽然可以自主决定去不去左右子树,但是两边子树存在前后关联的时候每一步都要处理(单独传递记录状态和目标的变量,比如2013年成都网络预选赛J题),这是容易忘记的一步。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值