О курсе
Для кого этот курс
Для школьников 7–11 классов, которые уже знают синтаксис Python и переходят к олимпиадным задачам. Курс помогает разбирать причины вердиктов TLE (превышение времени) и Wrong Answer, оценивать сложность программы и выбирать алгоритм с учётом ограничений задачи.
Чему вы научитесь
- Находить и устранять причины TLE: быстрый ввод-вывод, оценка сложности,
выбор правильной структуры данных.
- Применять ключевые олимпиадные приёмы: префиксные суммы и
разностный массив, два указателя и скользящее окно, сканирующую прямую, бинарный и тернарный поиск, в том числе бинарный поиск по ответу.
- Строить перебор и сокращать число рассматриваемых вариантов: использовать
рекурсию, битовые маски, жадные алгоритмы и метод ветвей и границ.
- Освоить динамическое программирование: от чисел Фибоначчи и путей в
таблице до НВП, НОП и задачи о рюкзаке, с восстановлением ответа.
- Решать базовые задачи на строки и графы: эффективная обработка строк,
представление графов, обходы в ширину (BFS) и в глубину (DFS).
Программа: 6 разделов, 30 тем
Раздел 1. Базовая оптимизация и математика. Быстрый ввод-вывод и борьба с TLE; встроенные структуры данных и их сложность; модульная арифметика и быстрое возведение в степень; алгоритм Евклида; проверка на простоту и решето Эратосфена; факторизация; системы счисления.
Раздел 2. Эффективная обработка последовательностей. Линейный поиск и оптимизация массивов; одномерные и двумерные префиксные суммы; разностный массив; два указателя и скользящее окно; сканирующая прямая и сжатие координат.
Раздел 3. Сортировки и поиск. Встроенная сортировка и ключи; бинарный поиск и модуль bisect; бинарный поиск по ответу; тернарный поиск.
Раздел 4. Жадные алгоритмы и перебор. Жадные алгоритмы; рекурсия и комбинаторные объекты; битовые маски; метод ветвей и границ.
Раздел 5. Основы динамического программирования. Базовое ДП; ДП с восстановлением ответа; наибольшая возрастающая подпоследовательность; наибольшая общая подпоследовательность; задача о рюкзаке.
Раздел 6. Строки и графы (введение). Эффективная работа со строками; представление графов и BFS; DFS, компоненты связности и поиск циклов.
Как устроен каждый урок
- Конспект теории — разбор приёма с примерами кода и оценкой сложности.
- Типичные ошибки — неверный формат вывода, пропущенные граничные случаи
и неправильная оценка причин вердикта.
- Задачи с автоматической проверкой — три задачи нарастающей сложности
(лёгкая, средняя, сложная) и вопрос на понимание. Решения на Python.
Что нужно знать заранее
Базовый Python: переменные, условия, циклы, списки, функции. Глубокой математики не требуется — всё необходимое объясняется по ходу. Достаточно желания разобраться, почему одно решение проходит, а другое получает TLE.
Материалы курса подготовлены с помощью ИИ под методическим контролем автора. Корректорскую правку текста курса в ноябре 2026 года выполнил ИИ-ассистент Kimi; содержание, примеры и код проверил автор курса.
Для кого этот курс
Начальные требования
Базовый Python: переменные, условия, циклы, списки, функции. Глубокой математики не требуется — всё необходимое объясняется по ходу. Достаточно желания разобраться, почему одно решение проходит, а другое получает TLE.
Как проходит обучение
- Конспект теории — разбор приёма с примерами кода и оценкой сложности.
- Частые ошибки на олимпиадах — соревновательные ловушки, на которых теряют баллы: формат вывода, краевые случаи, неверная диагностика вердикта.
- Задачи с автоматической проверкой — три задачи нарастающей сложности (лёгкая, средняя, сложная) и вопрос на понимание. Решения на Python.
Программа курса
В курс входят
- 30 уроков
- 30 тестов
- 90 интерактивных задач