Изменения

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

Многомерное дерево отрезков

168 байт добавлено, 17:16, 6 июня 2015
Запрос
Еще один момент, в которых отличается реализация {{---}} передаваемые в функцию параметры. В многомерном случае кроме всего прочего следует также передать рассматриваемое <tex>p-i+1</tex>-мерное дерево (или кортеж из чисел, указывающих на соответствующие элементы массива), а также область, которую следует рассматривать (или <tex>p-i+1</tex> пар чисел, обозначающих отрезки на соответствующих координатных осях). Все остальные детали реализации остаются такими же как и в одномерном дереве отрезков.
В нижеприведенном псевдокоде будет встречено обозначение будут встречены обозначения:* <tex>\mathtt{epsilon}</tex> {{---}} нейтральный элемент,* <tex>\mathtt{\odot}</tex> {{---}} та операция, которую мы считаем на данном многомерном дереве отрезков.
В каждом нижеприведенном псевдокоде будет встречен индекс <tex>\mathtt{P}</tex> {{---}} размерность массива из условия задачи.
'''return''' query(area[], x1, x2, ..., xP, node, 0, m - 1, area[P + 2].left, area[P + 2].right, 0)
med = (leftBorder + rightBorder) / 2
'''return''' query(area[], x1, x2, ..., xP, leftBorder, med, queryLeft, min(queryRight, med), node * 2 + 1) <tex>\timesodot</tex>
query(area[], x1, x2, ..., xP, med + 1, rightBorder, max(queryLeft, med + 1), queryRight, node * 2 + 2)
</code>
Анонимный участник

Навигация