树状数组总结

经过了5天的练习,再看了一遍树状数组,虽然第一遍基本没有怎么看,再看的时候可能是因为年龄和思维比大一更强了一点,所以再看的时候比第一次的一头雾水好了很多很多。接下来进行总结。

树状数组或者二叉索引树也称作Binary Indexed Tree,又叫做Fenwick树;它的查询和修改的时间复杂度都是log(n),空间复杂度则为O(n),这是因为树状数组通过将线性结构转化成树状结构,从而进行跳跃式扫描。通常使用在高效的计算数列的前缀和,区间和。

树状数组的优点:

  1. 代码短小,实现简单;
  2. 容易扩展到高纬度的数据;

缺点:

  1. 只能用于求和,不能求最大/小值;
  2. 不能动态插入;
  3. 数据多时,空间压力大;

可以看3篇个人认为较好的博客。

https://www.cnblogs.com/George1994/p/7710886.html

https://blog.csdn.net/rentenglong2012/article/details/69230308

https://blog.csdn.net/Proer_floweer/article/details/78845175

因为树状数组的特点,所以一般应用于只有更新和查询的题目(更新分为单点更新和区间更新),最经典的是逆序数(单点更新),

这几个题是基础的一维树状数组帮助理解

单点更新

HDU 1394  POJ 2352   POJ 2481

有时候数字规模太大,需要用到离散化的思想

POJ 2299  

多维树状数组

多维树状数组一维的更新 HDU 4267

多维树状数组多维的更新 POJ 1195

区间更新:

HDU 1556

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值