Изменения

Перейти к: навигация, поиск

Дерево Фенвика

405 байт добавлено, 20:12, 26 мая 2015
Нет описания правки
Для изменения величины <tex>a_{k}</tex> необходимо изменить элементы дерева <tex>T_{i}</tex>, для которых верно неравенство <tex>F(i) \leqslant k \leqslant i</tex> .
|proof=
<tex> T_i =\sum\limits_{k = F(i)}^{i} a_k , i = 0 .. n - 1 \Rightarrow</tex> необходимо менять те <tex>iT_i</tex>, для которых <tex>a_{k}</tex> попадает в <tex>T_i \Rightarrow</tex> необходимые <tex> i </tex> удовлетворяют условию <tex>F(i) \leqslant k \leqslant i</tex>.
}}
i = i | (i + 1)
== Запрос получения суммы значения функции на префиксе ==Пусть существует некоторая бинарная операция <tex>\circ</tex>. Чтобы получить значение на отрезке <tex>[i, j]</tex>, нужно провести операцию, обратную к <tex>\circ</tex>, над значениями на отрезках <tex>[0, j]</tex> и <tex>[0, i - 1]</tex>. В качестве бинарной операции <tex> G \circ </tex> рассмотрим операцию сложения. <br/>Обозначим <tex> G_i \circ_i = \mathrm sum(i) = \sum\limits_{k = 0}^{i} a_k </tex>. Тогда <tex> \mathrm sum(i, j) = \sum\limits_{k = i}^{j} a_k = G_j \circ_j - G_\circ_{i - 1} </tex>.
{{Лемма
146
правок

Навигация