Одномерное дерево Фенвика
Версия от 13:32, 4 апреля 2020; Algocourselecturenotes (обсуждение | вклад)
Задача: Есть массив a0 ... an-1, хотим поддерживать операции:
- upd (update) в одной точке
apos += val - сумма на отрезке
- al + ... + ar – ?
Дерево Фенвика
Дерево Фенвика (англ. Binary Indexed Tree, BIT) – это структура данных, дерево на массиве, обладающее следующими свойствами:
- позволяет вычислять сумму на отрезке [l; r] за время O(log n)
- позволяет изменять значение любого элемента за O(log n)
- использует O(n) дополнительной памяти
- легко обобщается на случай многомерных массивов.