$ Деревья отрезков (3 декабря) d = @link:[code]:../src/2015-12-03 # [10 минут] feelgood: даны a_i > 0, найти отрезок такой, что min × ∑ → max ## Напоминание: у нас уже было решение за O(n) стеком... ## Решение с помощью СНМ ## Решение деревом отрезков # [20 минут] Задачи на дерево отрезков (кодим) ## Снизу: присваивание в точке, сумма на отрезке $d$/down.cpp.html ## Сверху: присваивание в точке, сумма на отрезке $d$/up.cpp.html ## Динамическое $d$/up_dynamic.cpp.html ## Фенвика $d$/fenwick.cpp.html # [30 минут] Задачи на дерево отрезков ## Другие операции на отрезке: произведение чисел на отрезке, произведение матриц, сумма линейных функций, gcd на отрезке ## painter: число черных отрезков, суммарная длина черного, операция "покрасить отрезок" ## nearandmore: get(i, x): ближайший j ≥ i: a[j] ≥ x; set(i, x): a[i] = x; # [30 минут] Задачи на заметающую (сканирующую) прямую ## Offline. Даны m прямоугольников и n точек. Для каждого прямоугольника найти количество точек в нем. O((n+m)logn) ## Offline. Для перестановки на отрезке [l,r] научиться находить кол-во чисел от x до y ## Offline. Количество пар вложенных отрезков на прямой ## Количество k-инверсий в массиве за O(nklogn)