10.00 Сбор участников, открытие сборов
10.30–16.00 Командный практический тур (с перерывом на обед)
16.30–18.00 Лекции (все лекции читаются параллельно)
1. Порядок решения олимпиадной задачи во время тура
2. Оптимальное использование типов данных
3. Программистские ошибки и способы их контроля
4. Эффективное управление директивами компилятора
Понятие инварианта. Инвариант в математике. Математическая задача о вещественных числах.
Понятие инварианта а программировании на примере задачи поиска K максимальных элементов в массиве, K кратчайших путей в графе. Расширение понятия инварианта в программировании. Задача о наибольшем произведении (выбор трёх чисел из N) в терминах инвариантов. Инвариант как инструмент доказательного программирования.
Операция XOR. Инвариант в игре ним.
Метод динамического программирования как построение инварианта. Связь между инвариантом и функцией динамики на примере задачи «Покупка билетов». Задача о выборе подмножества элементов массива с максимальной суммой, в котором никакие два элемента не являются смежными.
Метод деления пополам. Минимальная теория, детали реализации. Задача «Провода».
1. Нахождение lcs за O(nm).
2. Алгоритм Хиршберга для нахождения lcs в линейной памяти, O(nm).
3. Нахождение lcs длины не менее k за O((k – n)m).
4. Нахождение lis за O(n\log n).
5. Нахождение lcs за O(r\log n).
10.00–15.30 Личный практический тур (с перерывом на обед)
16.00–17.30 Лекции (все лекции читаются параллельно)
1. Подсчет числа сочетаний: факториалы, рекурсия, динамическое программирование.
2. Общие принципы построения динамического программирования.
3. Основные применения динамического программирования:
4. Задача «Банкомат».
5. «Рюкзак».
1. Координаты и векторы.
2. Ориентированная площадь.
3. Уравнения линий.
1. Интерполяционные многочлены Лагранжа и Ньютона.
2. Вычисление многочлена Ньютона через разделенные разности.
3. Выбор узлов интерполяции для уменьшения погрешности.
4. Кусочная интерполяция. Сплайны – кубические, параболические.
10.00–15.30 командная олимпиада школьников (с перерывом на обед)
Легкий тур (по Кировской системе): сдача решений таблица результатов
Сложный тур (по системе ACM): сдача решений таблица результатов
16.00–17.30 Лекции (все лекции читаются параллельно)
1. О вреде рекурсии ;)
2. О пользе рекурсии :)
3. Backtracking (Перебор с возвратом)
1. Максимальный поток.
2. Максимальное паросочетание.
3. Решение задач сведения к задаче о построении максимального потока.
10.00–15.30 Личный практический тур (с перерывом на обед) сдача решений («одно окно») таблица результатов
16.00–17.30 Лекции (все лекции читаются параллельно)
1) Дерево интервалов.
2) Дерево максимумов.
3) Дерево отрезков.
4) Быстрый подсчет площади объединения прямоугольников.
5) Другие примеры использования.
(Система непересекающихся множеств)
1. Что такое производящие функции.
2. Степенные производящие функции.
3. Экспоненциальные производящие функции.
4. Примеры задач.
10.00–15.30 Командный практический тур (с перерывом на обед)
Легкий тур: сдача решений таблица результатов
Сложный тур: сдача решений таблица результатов
16.00–17.30 Лекции (все лекции читаются параллельно)
1. Поиск кратчайших путей во взвешенных графах.
2. Алгоритм Дейкстры
3. Восстановление пути
4. Примеры
5. Дополнение: использование кучи в Алгоритме дейкстры.
1. Декартово дерево
2. Бор
1. Тест Соловея-Штрассена.
2. Тест Рабина-Миллера