EduBrick
классная работа

Дорожная карта: в каком порядке учить

Проверь свой уровень

0/4решено 0 из 4до зачёта осталось 4

Чему научитесь

  • Понимать, почему порядок тем важнее их количества
  • Видеть, какие темы опираются на какие
  • Знать, в каком порядке читать разделы учебника платформы

Как устроено занятие

Сначала разбор с примерами и короткими проверками понимания — они нужны, чтобы поймать непонятое сразу, а не через три темы.

Дальше 8 задач лестницей: разминка, основа, со звёздочкой. Занятие засчитывается, когда решено 5 — остальные не пропадают и учитываются отдельно.

Сколько это займёт

Примерно час-полтора вместе с задачами. Сроков нет: можно закрыть вкладку и вернуться когда удобно — прогресс сохранится.

теория

Почему порядок важнее количества

Темы в олимпиадном программировании стоят друг на друге. Динамика на деревьях без обходов графа — это заучивание кода, а не понимание. Хеши без понимания, зачем нужен модуль, — источник вечных «почему у меня неверный ответ на десятом тесте».

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

Три правила порядка

Сначала то, что нужно везде. Оценка сложности, префиксные суммы, два указателя, сортировка. Эти четыре темы встречаются в задачах на любую другую тему.

Инструмент — после задачи, которая его требует. Дерево отрезков, взятое до того, как вы столкнулись с задачей «сумма на отрезке с изменениями», запоминается как обряд. Взятое после — как решение проблемы.

Одна новая тема за раз. Две параллельно дают ощущение движения и нулевой результат: на контесте вы не вспомните ни одну.

теория

Порядок тем: от базы до перечневых

Ступень 1. База

  1. Ввод-вывод, ветвления, циклы
  2. Строки и списки
  3. Функции и рекурсия
  4. Оценка сложности — раньше всех алгоритмов: без неё непонятно, зачем они
  5. Префиксные суммы
  6. Два указателя и скользящее окно
  7. Простые числа и решето

Ступень 2. Продвинутый

  1. Сортировки и задачи после сортировки
  2. Двоичный поиск: по массиву, потом по ответу
  3. Стек, очередь, дек
  4. Жадные алгоритмы и доказательство обменом
  5. Графы: представление, обход в глубину, обход в ширину
  6. Компоненты связности, двудольность
  7. Кратчайшие пути: Дейкстра, Флойд, Форд — Беллман
  8. Динамика: одномерная, по таблице, рюкзаки
  9. Битовые операции и маски

Ступень 3. Профи

  1. Топологическая сортировка, DAG, конденсация
  2. Строки: префикс-функция и Z-функция
  3. Боры и Ахо — Корасик
  4. Хеши и сравнение подстрок
  5. Дерево отрезков, корневая декомпозиция
  6. Динамика по подотрезкам, по маскам, на деревьях
  7. Геометрия
  8. Теория игр

Что зависит от чего

тема без чего не берётся
двоичный поиск по ответу оценка сложности, монотонность
кратчайшие пути обходы графа, очередь с приоритетом
динамика на деревьях обход в глубину, одномерная динамика
конденсация обход в глубину, компоненты связности
боры и Ахо — Корасик префикс-функция
хеши арифметика по модулю
дерево отрезков рекурсия, префиксные суммы
динамика по маскам битовые операции, динамика по таблице

Что можно брать не по порядку

Геометрия и теория игр стоят особняком: они почти ни на что не опираются, кроме базы, и их можно взять раньше, если такие задачи вам нравятся. Это единственное разумное исключение — остальные перестановки обходятся дороже, чем кажется.

теория

В каком порядке читать учебник

В учебнике платформы двадцать разделов и больше двухсот статей. Читать их подряд по номерам не нужно — порядок ниже соответствует порядку тем.

Сначала

  1. «Основы» — 4 статьи. Как устроена задача, как читать условие, что такое сложность
  2. «Линейные алгоритмы» — 15 статей. Префиксные суммы, два указателя, окно
  3. «Сортировки» — 12 статей
  4. «Поиск» — 10 статей. Двоичный поиск и поиск по ответу

Дальше

  1. «Жадные алгоритмы» — 10 статей. Обратите внимание на доказательства, а не на примеры
  2. «Теория чисел» — 10 статей
  3. «Рекурсия и перебор» — 10 статей
  4. «C++ и STL» — 10 статей. Если переходите с Python
  5. «Динамическое программирование» — 14 статей
  6. «Графы» — 23 статьи, самый большой раздел. Читайте по частям вместе с решением задач
  7. «Битовые операции» — 12 статей

Уровень перечневых

  1. «Строки» — 11 статей
  2. «Хеши» — 10 статей. После строк: так видно, что чем удобнее
  3. «Отрезки и сканирующая прямая» — 10 статей
  4. «Запросы на деревьях» — 8 статей
  5. «Остовные деревья и СНМ» — 6 статей
  6. «Динамика на графах» — 7 статей
  7. «Корневая декомпозиция» — 6 статей
  8. «Геометрия» — 20 статей
  9. «Теория игр» — 8 статей

Как читать

Не подряд и не целиком. Рабочий порядок такой: берёте раздел, читаете две-три статьи, идёте решать задачи на них, возвращаетесь за следующими. Раздел «Графы» из двадцати трёх статей, прочитанный за вечер, не оставит после себя ничего.

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

теория

Сколько это занимает

Честные ориентиры при двух-трёх часах в неделю. Они не обещание, а точка отсчёта: если у вас вдвое дольше — это нормально, если втрое — стоит поменять способ занятий, а не количество часов.

путь срок
с нуля до закрытой базы 4–6 месяцев
от базы до продвинутого 8–12 месяцев
от продвинутого до профи год и больше

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

Следующий урок — чек-лист развития: там способ проверить, что вы движетесь, а не топчетесь.