План занятий группы B

День 1 (02.08.09)
Практика. Задачи на повторение
Лекция. Сортировки и списки
День 2 (03.08.09)
Практика. Задачи на сортировки
Лекция. Графы. Обход в глубину.
День 3 (04.08.09)
Практика. Задачи на поиск в глубину
Лекция. Графы. Обход в глубину. Деревья.
День 4 (05.08.09)
Практика. Задачи на поиск в глубину 2
Лекция. Задачи на отрезках
День 5 (06.08.09)
Практика. Задачи на дерево отрезков
Лекция. Алгоритм поиска минимального остовного дерева
Лекция. Кратчайшие пути в графах
День 6 (07.08.09)
Практика. Задачи на кратчайшие пути и остовные деревья
Лекция. Деревья поиска
День 7 (09.08.09)
Практика. Задачи на декартовы деревья
Лекция. Динамическое программирование 1
День 8 (10.08.09)
Практика. Простые задачи на ДП
Лекция. Динамическое программирование 2
День 9 (11.08.09)
Практика. Задачи на ДП
Лекция. Динамическое программирование 3
День 10 (12.08.09)
Практика. Задачи на ДП
Лекция. Паросочетания
День 11 (12.08.09)
Практика. Задачи на ДП
Лекция. Паросочетания
День 12 (15.08.09)
Практика. Задачи на паросочетания
Лекция. Поиск подстрок
День 13 (16.08.09)
Практика. Задачи на поиск подстроки в строке
Лекция. Поиск набоора подстрок

День 1 (02.08.09)
Задачи на повторение ps pdf
fib.Числа Фибоначчиps pdf
aplusb.Сложениеps pdf
merge.Слияние последовательностейps pdf
power.Возведение в степеньps pdf
right.Правое вхождениеps pdf
Сортировки и списки
План лекции
  1. Сортировки
    1. Быстрая сортировка
      • Реализация
      • Нахождение K-ой порядковой статистики
    2. Сортировка слиянием
      • Разделяй и властвуй
      • Слияние отсортированных массивов
      • Реализация
      • Оценка сложности
      • Подсчет числа инверсий
      • Устойчивость сортировки
    3. Сортировка подсчетом
      • Реализация
      • Обработка дополнительной информации
    4. Цифровая сортировка
  2. Списки
    1. Односвязные и двусвязные списки
    2. Хранение списков в динамической памяти
    3. Хранение списков в массивах
      • Хранение нескольких списков в общей области
      • Список свободных ячеек
  3. Представление графов в памяти
    1. Определение графов (ориентированные/неориентированные)
    2. Матрица смежности
    3. Список смежных вершин

День 2 (03.08.09)
Задачи на сортировки ps pdf
darts.Дартсps pdf
deques.Декиps pdf
inverse.Инверсииps pdf
kth.K-й минимумps pdf
pref.Преферанс (*)ps pdf
Графы. Обход в глубину.
План лекции
  1. Поиск в глубину и элементарные применения
    1. Идея и реализация
    2. Поиск компонент связности
    3. Проверка графа на двудольность
    4. Проверка графа на лес
  2. Поиск в глубину: цвета и их применения
    1. Три цвета в поиске в глубину
    2. Нахождение цикла в ориентированном графе
  3. Поиск в глубину: дополнительные применения
    1. Проверка графа на сильносвязность за O(E) (два обхода в глубину)
    2. Нахождение лексикографически наименьшего пути
  4. Времена входа и выхода
  5. Топологическая сортировка
  6. Сильная связность
    1. Компоненты сильной связности. Алгоритм поиска
    2. Конденсация графа. Алгоритм поиска
    3. База и антибаза. Алгоритм поиска
  7. Эйлеровы циклы и пути
    1. Определение. Критерий существования цикла и пути
    2. Нахождение эйлеровых циклов и путей в ориентированных и неориентированных графах
    3. Разбиение графа на минимум путей

День 3 (04.08.09)
Задачи на поиск в глубину ps pdf
topsort.Топологическая сортировкаps pdf
сondense2.Конденсация графа-2ps pdf
post.Почтальонps pdf
avia.Авиаперелеты (*)ps pdf
Графы. Обход в глубину. Деревья.
План лекции
  1. Обход в глубину
    1. Классификация ребер при поиске в глубину для неориентированного графа
    2. Мосты и компоненты реберной двусвязности
      • Мосты. Определение и алгоритм поиска, реберная двусвязность
      • Точки сочленения. Определение и алгоритм поиска, вершинная двусвязность
    3. Точки сочленения. Определение и алгоритм поиска
  2. Деревья
    1. Определения и свойства
      • Подвешенные и неподвешенные деревья
    2. Хранение деревьев
      • Хранение только отца
      • Хранение всех детей
      • Хранение как простой граф
    3. Хранение двоичных деревьев
    4. Подвешивание деревьев

День 4 (05.08.09)
Задачи на поиск в глубину 2 ps pdf
ancestor.Предокps pdf
bridges.Мостыps pdf
points.Точки сочлененияps pdf
inevit.Неизбежностьps pdf
Задачи на отрезках
План лекции
  1. Range Sum Query (RSQ)
    1. Постановка задачи
    2. Реализация за $O(1), O(n)$
    3. Реализация за $O(n^2), O(1)$
    4. Реализация за $O(n), O(1)$ с использованием частичных сумм
  2. Range Min Query (RMQ)
    1. Постановка задачи
    2. Реализация за $O(1), O(n)$
    3. Реализация за $O(n^2), O(1)$
    4. Реализация $O(n \log{n}), O(1)$ с использованием разреженных таблиц
  3. Типы задач
    1. Offline-задачи
    2. Online-задачи
    3. Задачи с изменением элементов
  4. Деревья интервалов (отрезков)
    1. Структура дерева интервалов и представление в памяти
    2. Построение дерева интервалов за линейное время
    3. Решение задач RMQ и RSQ на дереве интервалов за $O(\log{n})$
      • Реализация сверху вниз (рекурсивная)
      • Реализация снизу вверху (итеративная)
    4. Изменение элементов
      • Изменение одного элемента
      • Добавление и вычитание на отрезке
  5. Ассоциативные операции
    1. Определение ассоциативной операции
    2. Минимум и сумма как ассоциативные операции
    3. Примеры ассоциативных операций
    4. Ассоциативные операции и деревья отрезков

День 5 (06.08.09)
Задачи на дерево отрезков ps pdf
rvq.Range Variation Queryps pdf
floor4.Четвертый этажps pdf
sparse.Разреженные таблицыps pdf
docs.Предъявите документы!ps pdf
Алгоритм поиска минимального остовного дерева
План лекции
  1. Системы непересекающихся множеств
    1. Эвристика сжатия путей
    2. Ранговая и весовая эвристики
    3. Эвристика подвешивания на случайную вершину
  2. Алгоритм Краскала
  3. Алгоритм Прима (включая реализацию с деревом отрезков)
Кратчайшие пути в графах
План лекции
  1. Поиск в ширину
    1. Идея
    2. Реализация с помощью очереди
    3. Кратчайшие пути в 1-k и 0-k графах
  2. Алгоритм Дейкстры
    1. Описание алгоритма
    2. Обоснование корректности
    3. Наивная реализация за $O(V^2)$
    4. Реализация с кучей или деревом отрезков за $O(E \log{V})$
    5. Связь с алгоритмом Прима
  3. Алгоритм Форда-Беллмана
    1. Идея
    2. Реализация
    3. Выход, если ничего не изменилось
    4. Поиск отрицательных циклов
  4. Алгоритм Флойда
    1. Идея
    2. Реализация
    3. Поиск отрицательных циклов

День 6 (07.08.09)
Задачи на кратчайшие пути и остовные деревья ps pdf
distance.Расстояние между вершинамиps pdf
island2.Островные государства-2ps pdf
path.Кратчайший путьps pdf
unionday.День Объединенияps pdf
Деревья поиска
План лекции
  1. Двоичные деревья поиска
    1. Определение
    2. Представление в памяти
    3. Поиск элемента
    4. Поиск минимума и максимума
    5. Поиск следующего и предыдущего элемента
    6. Поиск порядковых статистик
    7. Обход дерева. Получение элементов в отсортированном порядке
    8. Вставка элемента
    9. Удаление элемента
    10. Оценка времени работы в зависимости от высоты дерева
    11. Одинаковые элементы
  2. Декартовы деревья
    1. Определение
    2. Построение за $O(n \log{n})$
    3. Разделение декартовых деревьев
    4. Слияние декартовых деревьев
    5. Добавление и удаление элементов
    6. Число вершин в поддереве, поиск порядковых статистик
    7. Рандомизированные декартовы деревья

День 7 (09.08.09)
Задачи на декартовы деревья ps pdf
kthmax.K-ый максимумps pdf
rmq.RMQ наоборотps pdf
Динамическое программирование 1
План лекции
  1. Решение задач динамического программирования при помощи рекуррентных соотношений на примере задачи про последовательности без двух единиц подряд
    1. Определение вычисляемой функции
    2. Запись рекуррентного соотношения
    3. Задание начальных значений
    4. Определение порядка вычисления функции
    5. Вычисление ответа
  2. Семинар по простому ДП

День 8 (10.08.09)
Простые задачи на ДП ps pdf
ladder.Лесенкаps pdf
brackets.Скобкиps pdf
ones.Три единицыps pdf
threeseq.Три последовательностиps pdf
Динамическое программирование 2
План лекции
  1. Фундаментальные основы ДП (на примере задачи про черепашку)
    1. Принцип перекрытия подзадач как причина быстрой работы ДП
      • Дерево перебора и орграф подзадач
    2. Принцип оптимальности для подзадач
  2. Классы задач на ДП
    1. Подсчет объектов (в т.ч. определение существования объекта) (на примере задачи о 01-последовательностях без двух единиц подряд)
    2. Нахождение оптимального объекта (опять на примере черепашки)
    3. Нахождение k-ого объекта (на примере задачи о 01-последовательностях без двух единиц подряд)
  3. Способы написание ДП (на примере задачи о наборе заданной суммы заданным набором монет)
    1. ДП с просмотром назад
    2. Рекурсия с запоминанием результата (ленивое ДП)
    3. ДП с просмотром вперед
  4. Восстановление ответа в задачах на ДП
  5. Виды задач на ДП
    1. Линейное ДП (последовательности нулей и единиц без двух единиц подряд)
    2. Многомерное ДП (наибольшая общая подпоследовательность)
    3. ДП на подотрезках (максимальный подпалиндром)
    4. ДП на ациклических графах
    5. ДП на деревьях

День 9 (11.08.09)
Задачи на ДП ps pdf
boolean.Логическое деревоps pdf
numbers.Числаps pdf
palindr.Палиндромps pdf
sumcubes.Сумма кубовps pdf
Динамическое программирование 3
План лекции
  1. ДП на подмножествах
  2. ДП по профилю
  3. ДП по изломанному профилю

День 10 (12.08.09)
Задачи на ДП ps pdf
aquarium.Продавец аквариумовps pdf
nice.Симпатичные узорыps pdf
Паросочетания
План лекции
  1. Паросочетания, вершинные покрытия и независимые множества
    1. Паросочетания
      • Определение
      • Задача о максимальном паросочетании
    2. Вершинные покрытия
      • Определение
      • Задача о минимальном вершинном покрытии
      • Связь задач о минимальном вершинном покрытии и максимальном паросочетании
    3. Независимые множества
      • Определение
      • Задача о максимальном независимом множестве
      • Связь задач о минимальном вершинном покрытии и максимальном независимом множестве
  2. Двудольные графы
    1. Определение
    2. Теорема о циклах нечетной длины
    3. Проверка графа на двудольность
    4. Выделение долей
  3. Паросочетания в двудольных графах
    1. Удлиняющие цепи
    2. Теорема об удлиняющей цепи
    3. Классический алгоритм. Оценка времени работы
    4. Алгоритм Куна. Оценка времени работы
    5. Поиск минимального вершинного покрытия и максимального независимого множества в двудольном графе

День 11 (12.08.09)
Задачи на ДП ps pdf
aquarium.Продавец аквариумовps pdf
nice.Симпатичные узорыps pdf
Паросочетания
План лекции
  1. Паросочетания, вершинные покрытия и независимые множества
    1. Паросочетания
      • Определение
      • Задача о максимальном паросочетании
    2. Вершинные покрытия
      • Определение
      • Задача о минимальном вершинном покрытии
      • Связь задач о минимальном вершинном покрытии и максимальном паросочетании
    3. Независимые множества
      • Определение
      • Задача о максимальном независимом множестве
      • Связь задач о минимальном вершинном покрытии и максимальном независимом множестве
  2. Двудольные графы
    1. Определение
    2. Теорема о циклах нечетной длины
    3. Проверка графа на двудольность
    4. Выделение долей
  3. Паросочетания в двудольных графах
    1. Удлиняющие цепи
    2. Теорема об удлиняющей цепи
    3. Классический алгоритм. Оценка времени работы
    4. Алгоритм Куна. Оценка времени работы
    5. Поиск минимального вершинного покрытия и максимального независимого множества в двудольном графе

День 12 (15.08.09)
Задачи на паросочетания ps pdf
king.Король (*)ps pdf
pairs.Паросочетаниеps pdf
Поиск подстрок
План лекции
  1. Основные понятия
    1. Префикс строки
    2. Суффикс строки
    3. Подстрока
  2. Наивный алгоритм
    1. Описание
    2. Реализация
    3. Оценка времени работы
  3. Алгоритм Рабина-Карпа
    1. Описание
    2. Полиномиальный хэш
    3. Реализация
    4. Оценка времени работы
  4. Алгоритм Кнута-Морриса-Пратта
    1. Префикс-функция
      • Определение
      • Алгоритм построения
      • Оценка времени работы
    2. Поиск с применением префикс-функции
      • Алгоритм
      • Оценка времени работы
  5. Z-функция
    1. Z-функция
      • Определение
      • Алгоритм построения
      • Оценка времени работы
    2. Поиск с применением префикс-функции
      • Алгоритм
      • Оценка времени работы
  6. Хеш-таблицы (B1)
    1. Хэш-таблицы со списками
      • Структура
      • Поиск
      • Вставка
      • Удаление

День 13 (16.08.09)
Задачи на поиск подстроки в строке ps pdf
bacon.Шифр Бэконаps pdf
basis.Основание строкиps pdf
cubes.Кубикиps pdf
Поиск набоора подстрок
План лекции
  1. Бор
    1. Определение
    2. Построение за линейное время
    3. Поиск строки в боре за линейное время
    4. Представление в памяти
      • Массив детей
      • Список детей
  2. Поиск подстрок в строке с помощью конечного автомата
  3. Алгоритм Ахо-Корасик