Изменения

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

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

91 байт добавлено, 10:34, 21 апреля 2018
Нет описания правки
==Реализация==
Рассмотрим реализацию задачи о дереве отрезков с произвольной ассоциативной бинарной операцией.
Пусть в узлах дерева хранятся структуры из трех полей:
* <tex>right</tex> {{---}} правая граница этого полуинтервала.
* <tex> res</tex> {{---}} результат операции на полуинтервале.
 * <codetex>\varepsilon</tex> {{---}} нейтральный для данной операции элемент.
'''int''' query('''int''' node, '''int''' a, '''int''' b)
l = tree[node].left r = tree[node].right '''if''' [l, r) <tex>\cap </tex> [a, b) == <tex> \varnothing</tex> '''return''' ''neutral<tex>\varepsilon</tex>'' '''if''' [l, r) <tex>\subset</tex> [a, b) '''return''' tree[node].res '''return''' query(node * 2 + 1, a, b) <tex> \circ </tex> query(node * 2 + 2, a, b)</code>
==См. также==
286
правок

Навигация