Изменения

Перейти к: навигация, поиск
Массовое обновление на отрезке
Если операция <tex>\odot</tex> не коммутативна, то при запросах нужно, во-первых, раздать детям несогласованность, во-вторых, вызвать функцию от детей и, в-третьих, пересчитать свое значение. Очень важно выполнить все три пункта.
==Массовое обновление на отрезкеПример==
Для реализаций операций на отрезке нам потребуетМассовые Рассмотрим массовые операции на отрезке рассмотрим на примере минимума задачи "Прибавление на отрезке и прибавления ". При этом мы должны отвечать на запрос минимума на отрезке.
Пусть дерево отрезков хранится Для эффективной реализаций будем использовать описанную выше структуру {{---}} несогласованные поддеревья. В каждой вершине, помимо непосредственно суммы, храним несогласованность {{---}} сколько необходимо прибавить ко всем числам этого отрезка(соответственно при запросе минимума истинный минимум на отрезке при корректной несогласованности {{---}} сумма несогласованности и значения в массиве <tex>T</tex>вершине). Для реализации массового обновления будем хранить дополнительный массив несогласованностей Тем самым мы сможем обрабатывать запрос прибавления на любом подотрезке эффективно, вместо того чтобы изменять все <tex>dO(N)</tex>значений. Истинные  Если теперь приходит запрос минимального значения <tex>T'[v] = T[v] + d[v]</tex>на отрезке, то нам достаточно спуститься по дереву, "протолкнув" все встреченные по пути несогласованности, записанные в вершинах дерева.
==Псевдокод==
333
правки

Навигация