BIT Interval MAX
首先,a[]数组仍然是保存原始数据。c[i]将会保存从a[1]到a[i]的最值。
单点修改时间复杂度log2(n)^2,区间查询时间复杂度log2(n)
1。单点更新:
直接更新a[i],然后再更新h[i]。若h[i]的值有可能改变的,则表示区间一定包含i结点。那么就两层lowbit更新所有可能的h。
单点更新时间复杂度O(logn*logn)
2。区间查询最大值:
设要查询的区间为[L,R],那么就从h[R]开始找,要找[L,R]内的所有区间。所以依然是两层lowbit,然后R向前跳直到跳到L前面。
区间查询最大值时间复杂度O(logn*logn)
以前一直把树状数组当作求前缀的工具,但事实上,树状数组是一种分块的方式,因为分块的方式比较独特,所以在求前缀的过程中非常方便;