Путь олимпиадника

Пошаговая программа подготовки к олимпиадам по программированию: от основ алгоритмики до экспертных тем. Каждый уровень содержит уроки с теорией, примерами кода и задачами с автоматической проверкой. Если вы совсем новичок — сначала пройдите курс одного из языков программирования.

Как устроен путь Перед вами 6 уровней — от основ алгоритмики до тем международных олимпиад. Уровни выстроены так, что каждый опирается на предыдущие: бинарный поиск из уровня 2 понадобится в продвинутом ДП уровня 5, а DSU из уровня 3 — в алгоритме Краскала на уровне 4. Поэтому проходите уровни по порядку и не перепрыгивайте. Если вы ещё не уверенно пишете код — сначала пройдите курс одного из языков программирования (C++, Python, Java или Go): они в разделе «Обучение» рядом с этим путём. Примеры в уроках пути можно смотреть на любом из этих языков — переключатель прямо над кодом.
Как заниматься, чтобы был результат 1. Читайте урок и запускайте каждый пример. Пример ввода уже подставлен — нажмите «Запустить», затем поменяйте данные или сам код и посмотрите, что изменится. Понимание приходит из экспериментов, а не из чтения. 2. Решайте задачи после урока. Тема считается усвоенной, когда вы решили несколько задач по ней самостоятельно — без подглядывания в разбор. Отмечайте пройденные уроки, чтобы видеть прогресс. 3. Занимайтесь регулярно. Три-четыре занятия в неделю по часу дают больше, чем одно воскресенье по восемь часов: мозгу нужно время на закрепление. 4. Участвуйте в соревнованиях начиная с уровня 2–3. Соревнование учит тому, чего нет в уроках: распределять время, выбирать порядок задач, не паниковать.
Если застряли Это нормально — застревают все. Рабочие приёмы: вернитесь на урок назад и перерешайте его задачи; разберите решение на маленьком примере на бумаге, руками; отложите задачу на день — свежая голова часто видит ответ сразу. Если тема совсем не идёт, пройдите дальше и вернитесь через неделю: знания следующего урока нередко «доосвещают» предыдущий. Удачи! Начинайте с Уровня 1.

В этом разделе

  1. 1
    Уровень 1. Основы алгоритмики

    Сложность алгоритмов, задачи на реализацию и базовая математика — фундамент всего дальнейшего пути.

  2. 2
    Уровень 2. Сортировки и поиск

    Классические приёмы, которые встречаются почти в каждой олимпиадной задаче: сортировки, два указателя, префиксные суммы и бинарный поиск.

  3. 3
    Уровень 3. Структуры данных и жадные алгоритмы

    Стек, очередь, множества и словари, рекурсия, жадные алгоритмы и DSU — инструменты для задач среднего уровня.

  4. 4
    Уровень 4. Графы и динамическое программирование

    Обходы графов, кратчайшие пути, остовные деревья и первые задачи на динамическое программирование.

  5. 5
    Уровень 5. Продвинутые темы

    Продвинутое ДП, дерево отрезков, строковые алгоритмы и теория чисел — уровень призёров региональных олимпиад.

  6. 6
    Уровень 6. Экспертные темы

    Потоки, суффиксные структуры и вычислительная геометрия — темы международного уровня.

Доска