总结027—第五周

这几天主要是把树状数组的文章看完,外加部分线段树文章。

树状数组的理解:用于数组快速单点修改,和快速区间求和;查询和修改的时间复杂度都为log(n),空间复杂度为log(n)。

树状数组一般包含两个操作:更新和查询。更新元素需注意的是更新的是树状数组而不是初始数组;查询过程相当于是求前缀和的过程,有了前缀和,就可以通过前缀和的作差得到其中部分区间和的答案。

二维树状数组:存储规律和一维相同,只需在单点修改和区间查询的操作中在套用一个循环。

假设初始二维序列是nu[n][m],二维树状树状数组是tree[n][m],那么tree[x][y]存的是二维初始序列中右下角为nu[x][y],宽lowerbit(y),高为lowerbit(x)的子区间的区间和。

另外树状数组可与二分连用,感觉比较好,但只能处理下标从1开始的问题。

对于线段树:用链表和数组都可存储。把大区间分为若干个不相交的区间,每次维护都在小区间上处理,并且查询也在这些被分解的区间中信息合并出我们需要的结果,这就是线段树高效的原因。

对于线段树类的题这周就看了两道,还应注意效率和时间安排。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值