Изменения

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

Реализация запроса в дереве отрезков снизу

310 байт добавлено, 20:22, 19 мая 2013
Учёт отсутствия коммутативности
==Псевдокод==
Пусть результат считаем на отрезке [left, right]. При этом значения left и right, передающиеся в функцию, должны указывать на листья дерева (необходимо увеличить значение на индекс массива, с которого начинаются листья). Переменные left_res и right_res будут собирать значения на отрезках, отделившихся соответственно слева или справа от рассматриваемого.
query(left, right)
result left_res = neutral; right_res = neutral;
'''while''' left < right
'''if''' left mod 2 == 0
result left_res = result left_res <tex> \circ </tex> data[left];
left = left div 2;
'''if''' right mod 2 == 1
result right_res = result data[right] <tex> \circ </tex> data[right]right_res; right = (right - 21) div 2;
'''if''' left == right
result left_res = result left_res <tex> \circ </tex> data[left]; '''return''' resultleft_res <tex> \circ </tex> right_res;
==Ссылки==
308
правок

Навигация