Разбор прошлых задач и Структуры данных (9 октября 2014)
- Разбор задач на бинарный поиск
- Найти, сколько чисел от L до R [code] [code]
- Найти, сколько раз на отрезке [L..R] встречается число X [code]
- Ближайшие точки
- Код на C++ за O(nlog2n)
- Убираем лишний корень, улучшаем асимптотику до O(nlogn), пишем внутри while вместо for(i,8) [code]
- Далем ошибку (перебираем только 3 следующие точки), пытаемся ее найти тестированием [code]
- Вектор и начало амортизационного анализа
- Dequeue на массиве: {Pop,Push}{Front,Back} + индексация, все за O(1)
- Время работы вектора с удвоением.
- Вектор с удвоением без амортизации за O(1) в хедшем случае на одну операцию
- Тестируем вектор на C++
- a[i], a.at(i), struct myVector : vector [code]
- resize, reverse, clear
- Проблема большого числа маленьких векторов: переопределяем аллокатор [code]
- Быстрая реализация мультисписка [code]
- Решение задач на стек и скобочные последовательности
- Проверить на правильность, несколько типов скобок + найти парные скобки
- Отрезок с максимальной суммой: частичные суммы + частичные минимумы. Стек с минимумом.
- Ближайший слева меньший, ближайший справа меньший
- Массив положительных чисел, ищем отрезок: ∑ × min → max
- Ищем за O(wh) подпрямоугольник из нулей максимальной площади