Декартово дерево
- (L,R) = Split(T, x)
- T = Merge(L, R)
- Add. Через Split-Merge и одним запросом сверху.
- Del. Через Split-Merge и одним запросом сверху.
- Find K-th.
- Количество, сумма всех элементов со значениями из [L..R]
- Построение за O(n)
- Randomized Trees (y можно не хранить)
Декартово дерево по неявному ключу
- Ключ = позиция элемента. Неявный, т.к. восстанавливается из size-ов.
- Split и Merge для дерева по неявному ключу.
- Вставка на i-ю позицию, удаление с i-й позиции
- Поменять местами два подотрезка массива.
- Reverse подотрезка массива.
- Прибавление на отрезке, присваивание на отрезке.
Неменяющийся массив.
- Сумма на отрезке с предподсчетом за O(n)
- Минимум на отрезке с предподсчетом за O(n2)
- Минимум на префиксе.
Дерево отрезков
- Построение за O(n)
- Поменять 1 элемет
- Сумма, минимум на отрезке
- Прибавление на отрезке, присваивание на отрезке.