type
status
date
slug
summary
tags
category
icon
password

树状数组

  • 单点修改和区间求和
  • 区间修改和单点查询
  • 区间修改和区间查询
可以用前缀和的方法维护这个数组,这样的话区间求和的时间复杂度就降到了O(1) ,但是单点修改会影响后面所有的元素,时间复杂度是O(n)。

树状数组的实现

当然是使用树形数据结构了。
利用二进制的性质来维护一棵树
notion image
而树的遍历操作使用进制实现:
建立:由于是离线操作,使用原数组虚拟出这种结构即可。
具体操作为:
区间修改和单点查询:使用差分数组取代原数组即可。

二维树状数组

将树的处理化为二维,
而求值参考二维前缀和的式子,使用容斥原理即可

树状数组求第K大

向后枚举

求区间内小于k的个数

可以使用分块或主席树,但是分块可能会卡时间,主席树又过于复杂,在这里研究树状数组做法。
使用树状数组统计当前处理值之前的所有较小元素的位置,并计算区间内的数量。
将结果加上查询区间的左端点后存储。
动态规划基础-哈希Hash
Loading...