1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| class BIT: def __init__(self, n): self.size = n self.arr = [0] * (n + 1) def sum(self, i): s = 0 while i: s += self.arr[i] i -= i & -i return s def add(self, i, x): while i <= self.size: self.arr[i] += x i += i & -i
bit = BIT(8)
bit.add(1, 5) bit.add(2, 3) bit.add(3, 7) bit.add(4, 9) bit.add(5, 6) bit.add(6, 4) bit.add(7, 1) bit.add(8, 2)
print(bit.arr)
print(bit.sum(7))
bit.add(5, 2)
print(bit.sum(8))
5 20 0 [0, 5, 8, 7, 24, 6, 10, 1, 37] 35 39
|