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