Теория
- Частичные суммы (задача = sum[L,R])
- Частичные минимумы (задача = min[1,R])
- Метод двух указателей (задача = пересечение, объединение, разность множеств)
- Подсчет count[x] (задача, есть массив из чисел от 0 до 106, нужно за O(1) говорить "сколько раз в нем встречалась число x")
- Разница Online и Offline задач.
Задачи
- Сумма на подрямоугольнике за O(1)
- Минимум в углу прямоугольника O(1)
- Даны числа -1 и 1, нужно определить, сколько подотрезков имеют нулевую сумму.
- Для отрезка за O(N)
- Для окружности за O(N)
- Нужно за O(N) найти подотрезок с максимальной суммой.
- Для отрезка за O(N)
- С ограничением на длину отрезка Len > A за O(N)
- С ограничением на длину отрезка B > Len > A за O(N)
- На окружности
- Выбрать отрезок с max суммой, содержащий не менее K различных чисел.
- Задача Hard: длины от L до R, число различных чисел от A до B, все это на окружности, максимизировать сумму