Структуры данных (9 октября 2013)
- Разбор задачи про БОЛЬШОЙ холодильник [код]
- Задачи [код]
- Удалить из массива за O(1)
- Минимум на стеке, минимум на очереди − вы уже знаете
- Максимумы на отрезке длины ровно K (через очередь + новая идея)
- Отрезок с максимальной суммой
- За O(N) через частичные минимумы частичных сумм
- За O(N) с O(1) доп.памяти
- Числа на окружности, O(N)
- Длина отрезка от L до R, O(N)
- Длина отрезка от L до R, числа стоят на окружности, O(N)
- Подотрезок массива длины не более k с максимальным количеством различных чисел. O(N).
- Подотрезок массива, в котором не более k различных чисел максимальной суммы. O(N).
- Амортизационный анализ
- Про расширяемый вектор: тоже самое, но чуть проще
- Структура данных, которая умеет искать сколько чисел от L до R
- А еще нужно быстро уметь сливать две структуры.
- А теперь задача: сколько чисел от L до R, можно числа добавлять
- Обобщение: статическая задача, O(Build), O(Get), получили пополняемую структуру
- Теоретические задачи на дом
Даны N точек, нужно выбрать K так, чтобы минимизировать максимальное из расстояний от исходной до ближайшей выбранной
- Точки на прямой, O(NK).
- Точки на прямой, O(N × logX).
- Точки на окружности, O(N2 × logX).
- Точки на окружности, O(N2/K × logX).
- Точки на окружности, O(N × logX).
- Упражнения
- Доказательство корректности алгоритм поиска отрезка с максимальной суммы с O(1) доп.памяти
- Решить задачу про отрезок максимальной сумме на окружности за O(N) проще, чем рассказывалось на лекции
- Не более k различных чисел на отрезке. Ищем отрезок с максимальной суммой. Обсудили случай "неотрицательные числа". Что делать, если есть отрицательные?