【学习笔记】浅谈线段树与树状数组

这是两种类似的算法
这是两种O(n^2)->O(nlogn)的算法

这两种算法有区别

树状数组支持:

  • 单点修改(+-*/,维护最值)
  • 区间修改(+-,维护最值)
    注意:树状数组覆盖的区间不灵活,只能前缀或后缀,值的变化还好说,维护区间最值的话就很伤了,但这篇题解宽了我的思路,说明要做到树状数组维护区间最值可以浪费点时间

线段树支持:

  • 单点修改(+-*/,维护最值)
  • 区间修改(+-*/,维护最值)

线段树因为自身结构以及lazytag的存在,可以做到支持面比树状数组更广,更灵活
线段树比树状数组优的地方显而易见,维护最值可以用线段树为啥还要用更慢的树状数组涅?

那么问题来了:树状数组真的没有好的地方了吗?
当然是有的
十分明显的:树状数组码量少!
还有树状数组的空间和常数都比线段树小,所以有些题用树状数组比用线段树更快一些

这是普通的树状数组与线段树的区别!
但zkw线段树的存在貌似让树状数组没的活了
zkw线段树比之线段树空间小,常数小,好像把树状数组最后的一点优势弄没了。。。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值