- Билет
- Теорема Эйлера (для планарного графа)
- RSQ и RMQ на меняющейся матрице, 2D деревья отрезков и Фенвика [O(n2), O(log2n)].
- Трансверсальный матроид (паросочетания) (определение, док-во того, что это матроид, алгоритм, который из этого следует)
- Билет
- Задача о назначениях, транспортная задача (формулировки задач, сведение их к mincost потоку)
- Функция Смита. Способ подсчета за O(EsqrtE). Доказательство LOSE/WIN/DRAW. bonus: Доказательство XOR-а.
- Задачи: Поиск слов в тексте, наибольшая общая подстрока, наибольший подпалиндром (все они решаются хэшами за O(NlogN)).
- Билет
- Полиномиальный хэш от строки. А также подсчет хэша от подстроки, как суммы на отрезке.
- 2 метода Online поиска LCA (двоичный подъем [O(nlogn), O(logn)] и Эйлеров обход дерева [O(n), O(logn)] а также [O(nlogn), O(1)] с помощью SparseTable)
- Суффиксный массив хэшами за O(Nlog2N), сравнение хэшами строк на больше меньше. LCP за O(NlogN). Суффиксный массив цифровой сортировкой за O(N2)
- Билет
- Лемма Холла (только формулировка)
- Док-во невозможности r-приближения задачи коммивояжера в графе, в котором не выполняется неравенство треугольника при P != NP (сведение к задаче про гамильтонов цикл)
- Обучение Нейрона с помощью Градиентного спуска.
- Билет
- Игры на ацикличных графах = динамическое программирование. O(E). LOSE/WIN, максимизировать/минимизировать число ходов.
- Пути в дереве. Веса ребер дерева не меняются, RSQ и RMQ (RSQ = [O(n), O(1)] + LCA, RMQ = [O(n), O(logn)] + LCA).
- Раскраска ребер двудольного графа в max Degee цветов.
- Билет
- MST (Прим, Краскал) (время работы, собственно алгоритм, без док-во)
- Алгоритм Куна (отличие от базого алгоритма, bonus: док-во).
- RSQ: Меняющийся массив, дерево Фенвика [O(n), O(logn)], собственно дерево, преимущество над деревом отрезков, bonus: док-во корректности
- Билет
- floyd (время работы, реализация)
- Графовый матроид (определение, док-во того, что это матроид, алгоритм, который из этого следует)
- Offline поиск LCA (алгоритм Тарьяна, O(n*), собственно алгоритм, рассказ про СНМ (хранить, как лес + сжатие путей + подвешинвать меньшее к большему), bonus: док-во корректности работы)
- Билет
- Полиномиальный хэш от строки. А также подсчет хэша от подстроки, как суммы на отрезке.
- 2-SAT: Жадное решение за O(VE), bonus: док-во.
- Операции с декартовом деревом по явному ключу: Insert, Delete, K-th, Add(L, R), GetSum(L, R) (1) Выразить эти операции через Split и Merge (2) реализовать их независимо.
- Билет
- Укладка в R3, на сфере
- Обучение Нейрона с помощью Л.П (если все неравенства разрешими, если не все разрешимы - 2 метода = наращивать, или удалять лишние)
- Алгоритм Диница (bonus: док-во времени работы O(VE2))
- Билет
- Задача классификации. Что такое нейрон. Разделение "хорошего" и "плохого" на >= 2 и <= 1 (просто сказать, что такое Нейрон)
- КД-дерево [O(NlogN), O(sqrtN)], использует O(N) памяти. Преимущество над 2D деревом отрезков (не память). bonus: Док-во времени работы.
- Теорема о дополняющем чередующемся пути для паросочетания в произвольном графе.
- Билет
- Las-Vegas (про самое часто встречающееся число, про подобные прямоугольники)
- Декартово Дерево по неявному ключу. Add(L, R), GetSum(L, R), Reverse(L, R), Insert(i), Delete(i) (что из этого умеет дерево отрезков, что нет?)
- Алгоритм Масштабирования потока (bonus: док-во времени работы O(E2log))
- Билет
- Вершинные поток и разрез. Поток и разрез (реберные и вершинные) в неорграфе.
- RSQ, RMQ: Меняющийся массив, дерево отрезков [O(n), O(logn)], преимущество над деревом Фенвика.
- Функция Гранди. Способ подсчета за O(E). Применение. Доказательство LOSE/WIN. bonus: Доказательство XOR-а.
- Билет
- Паросочетание, контролирующее множество, независимое множество (определения, как соотносятся их размеры, без док-ва)
- Дейкстра с потенциалами для поиска MinCost flow
- Iterative Deepening. Связь dfs-а и bfs-а. Почему dfs + Iterative Deepening работает не дольше bfs-а? Автоматический подбор параметров. Iterative Increasing K в билете выше "Выбор первых K ребер".
- Билет
- Теорема Брукса (про вершины, формулировка). Док-во того, как можно всегда покрасить в D+1 цвет.
- Меморизация в переборе: проблемы в случае решения задачи "поиск кратчайшего по весу пути". Решение проблемы.
- Градиентный спуск, случайный поиск, метод Ньютона (в R, в Rn). Выбор направления, выбор расстояния.
- Билет
- Троичный поиск (связь с двоичным поиском и производной)
- Эвристика Полларда. O(N1/4). bonus: Док-во времени работы.
- MST x 2, объянение, почему на практике погрешность меньше теор. оценок, bonus: MST x 3/2 (алгоритм Кристофилдса)
- Билет
- Сжатый бор, сжатое суффиксное дерево, получение из суф.массива с LCP за O(N)
- Алгоритм Эдмондса (сжатие соцветий). Реализация за O(V4). bonus: док-во корректности работы.
- Локальные оптимизации для Коммивояжера (собственно хотя бы 2 локальных оптимизации, док-во конечности процесса, поиск очередной оптимизации за O(N))
- Билет
- Док-во того, что K3,3 и K5 не планарны. Теорема Куратовского (только формулировка)
- Алгоритм Эдмондса (поиск в ширину, bonus: док-во времени работы O(VE2))
- Каргер-Штейн (собственно метод, оценка времени работы O(N4*log), улучшение, bonus: оценка времени работы O(N2*log2))
- Билет
- Теорема Визинга (про ребра, только формулировка)
- Теорема Форда-Фалкерсона (max F = min C)
- Векторный матроид (определение, док-во того, что это матроид, алгоритм, который из этого следует)
- Билет
- поиск отрицательного цикла (любой из двух вариантов - или через Флойда, или через Форда-Беллмана)
- Лемма о дополняющем пути (и алгоритм поиска паросочетания за O(VE), который из нее следует).
- Поиск вещественных корней многочлена. Время работы = O(N2log)
- Билет
- Генетический алгоритм (мутации, скрещивание, отличие от Отжига и Локальных оптимизаций). Дать общее описание.
- Покрытие дерева путями, сведение запроса на пути к 2D запросу. Решение задач RMQ и RSQ за [O(n), O(log2n)]
- Покрытие ацикличного графа min числом цепей (сведение к паросочетанию в двудольном графе).
- Билет
- ford-bellman, реализация тремя циклами, реализация с break-ом, реализация с очередью.
- LCP для суффиксного массива за O(N). Алгоритм Касаи для суффиксов. bonus: Случай циклических сдвигов.
- [L,R] потоки (решение mincost потоком, решение обычным потоком)
- Билет
- Бинарный поиск (поиск корней функции, поиск числа в массиве)
- RSQ, RMQ: Неменяющийся массив [O(n), O(logn)], Sparse table [O(nlogn), O(1)]. RSQ и RMQ на неменяющейся матрице [O(n2), O(1)] для RSQ и [O(n2log2n), O(1)] для RMQ.
- Прибавление и присваивание на отрезке (в дереве отрезков, время на 1 операцию = O(logn)).
- Билет
- Решение задачи "Кто автор этого стиха? Пушкин или Лермонтов?" (сказать, как это делать с помощью одного Нейрона)
- Декартово Дерево по явному ключу. Операции Split и Merge.
- Дерево отрезков декартовых деревьев (на примере задачи "сколько чисел на отрезке [i,j] имеют величину от L до R").
- Билет
- bfs (время работы, реализация, док-во корректности)
- Ретроанализ, игры на графах с циклами. O(E). LOSE/WIN/DRAW, максимизировать/минимизировать число ходов.
- Матроиды. Определение. Алгоритм Радо-Эдмондса. bonus: Док-во.
- Билет
- Теорема Дилворта. Формулировка. Док-во неравенства в одну сторону.
- Квадродерево на матрице [O(n2), O(n)]. Преимущество над 2D деревом отрезков, bonus: док-во времени работы.
- Веса ребер дерева меняется, RSQ за [O(n), O(logn)] (Эйлеров обход + фишечка)
- Билет
- Алгоритм раскраски вершин планарного графа в 6 цветов.
- 2-SAT: Решение за O(E). Док-во времени работы. bonus: Док-во корректности.
- Лемма Татта-Берджа. Формулировка. Док-во неравенства в одну сторону. bonus: Док-во неравенства в другую сторону.
- Билет
- Бор. Суф.дерево. Способы хранения бора (массив, список, дерево поиска, хэш-таблица, общая хэш-таблица для всех вершин).
- Алгоритм Ахо-Корасика. Сам алгоритм. (1) построение полного автомата next[vertex, char] (2) версия с линейной памятью, bonus: док-во времени работы в (2).
- Локальные оптимизации. Оптимизация произвольной функции f : AnySpace → R. Cлучайный поиск. Градиентный спуск. Оптимизация для задачи коммивояжера.
- Билет
- Поток, разрез (определение,)
- Усовершенствованные поиски для f : R → R (2 варианта, основная мысль = разделить отрезок на ~100 частей )
- MinCost поток. Отсутствие отрицательных циклов. Лемма о дополняющем пути для MinCost потока.
- Билет
- Monte-Karlo (собственно метод)
- Алгоритм разбиения графа на грани за O(E). Выделение внешних граней (смотрим на знак площади грани).
- Алгоритм Укконена за O(N). Сам алгоритм. bonus: док-во времени работы.
- Билет
- dfs (время работы, реализация, док-во корректности)
- Отжиг. Сам процесс. Отличие от локальных оптимизаций. На примере f : R → R. bonus: На примере задачи "ограничить на плоскости max число точек веревкой длины L".
- Simplex метод. bonus: Реализация Simplex метода.
- Билет
- Связь перебора и жадности. Что лучше? Сортировка ребер в переборе. Выбор первых K ребер.
- Тест Ферма, тест Миллера-Рабина. O(logN). Док-во корректности отсечений.
- Алгоритм Демукрона. Собственно алгоритм, bonus: разбор всех крайних случаев и док-во времени работы O(N2).
- Билет
- Решето Эратосфена = O(NloglogN), описание алгоритма. bonus: док-во времени работы.
- 2D дерево отрезков (дерево строится на N точках, [O(NlogN), O(log2N)]. Использует O(NlogN) памяти
- Nearest (просто описание аллгоритма). bonus: док-во того, что Nearest не хуже построения MST Примом.
- Билет
- Формулировка задач 2-SAT, 3-SAT.
- Алгоритм Хопкрофта-Карпа за O(EsqrtV), bonus: док-во времени работы
- Паросочетание в произвольном графе. Рандомизированный алгоритм (на основе алгоритма построения паросочетания в двудольном графе)
- Билет
- RSQ: Неменяющийся массив [O(n), O(1)]
- Построение за O(N) декартова дерева по неявному ключу
- Разбиение путей дерева через LCA на 2 вертикальных, Offline и Online задачи.