Про графы [см. 2012-02-09]
- Сила dfs-а
- 2-связность (реберная и вершинная, алгоритм со стэком)
- Гамильтоновы путь и цикл
- Динамика за 2n n2 (состояние = множество посещенных вершин и последняя посещенная)
- Полный перебор
- Эвристика конем
- Эвристика связности
Про игры [см. 2012-02-16]
- Функция Смита (без док-ва)
- Смысл: то же, что и Гранди, только с циклами
- Определение
- Вычисление функции Смита за O(VE) = whil (run) do
Перебор
- Полный перебор.
- Рекурсия.
- Мир глобален, не копируется, после отката из рекурсии возвращается в старое состояние.
- Метод Ветвей и Границ (на примере задачи timus : 1152)
- Жадность и перебор с сортировкой ребер
- Выбор первых k ребер.
- Iterative Increasing of k
- Нерекурсивная реализация bfs-ом. Очередь с ограничением по длине.
Задачи про перебор
- Японский комьютер: нужно получить какое-то множество чисел от 1 до 42. Изначально есть только число 1. Допустимые операции: +, -, *2k.
- Поезда: заказ = отрезок [Li, Ri] и кол-во пассажиров Ki. Вместимость поезда = C, нужно принять max число заявок.
Задачи (примеры) к графам
- Найти путь из A в B : max вес ребра в пути минимален
- Для каждой пары вершина A и B сделать (1)
- Дополнить граф до связного
- Дополнить граф до сильносвязного
- Найти диаметр графа (2 самые удаленные вершины)
- Найти диаметр дерева
- Проверить, является ли граф деревом
- Число способов пройти по шахматной доске конем из (1,1) в (N,N).
- Маша и грибы (Маша ходит по матрице и собирает грибы, ходить можно только вниз и вправо, нельзя врезаться в деревья).
- Найти расстояние от множества A до множества B в невзвешенном графе.
- Найти расстояние от множества A до множества B во взвешенном графе.
- Not read Разбить кактус на циклы
Стурктуры данных
- Частичные суммы
- sum[R+1] - sum[L]
- Обобщение на плоскость
- Sparse Table для минимума
- Обобщение на дерево
- Двоичный подъем по дереву для нахождения LCA и минимума, и суммы на пути