如何使用二进制索引树进行范围更新,以便范围内的每个元素A[k]
都[i..j]
更新到A[k]*c
某个c
常量的位置。
而且我需要在这样的更新操作之后进行点查询。
我尝试使用下面的函数,但它不起作用,这里n
是数组的大小,c
是我想与范围的每个元素相乘的常数。
def updateM(x, c, n):
while x <= n:
BIT[x] *= c
x += (x & -x)
这些是我更新范围的调用:
updateM(i, c, n)
updateM(j+1, -c, n)
任何形式的帮助将不胜感激。:)