← Вернуться в блог

Что делать после разбора: план тренировки на 3 и 7 дней ГАЙД

  • metodologiya
  • training-plan
  • retention
  • deliberate-practice
  • spaced-repetition

Прочитать чужой разбор задачи приятно и обманчиво. Появляется ощущение, что задача «понята»: мысль автора отслежена, код стал прозрачным, идею можно пересказать вслух. Через неделю это ощущение растворяется. На контесте встречается задача того же типа — и оказывается, что ни идею не получается восстановить, ни код не пишется без подсмотра. Между «я понял» и «я могу воспроизвести через неделю под давлением» стоят несколько дней целенаправленной работы.

Этот гайд — про то, как организовать эти дни. Без них один разбор остаётся одной строкой в логе прочитанного. С ними — становится частью устойчивого навыка, который вытаскивается из памяти за минуту в боевой ситуации.


Зачем вообще что-то делать после разбора

Кажется логичным закрыть разбор, поставить галочку и идти к следующему. Этот импульс есть у всех, но он мешает прогрессу. Причина — устройство памяти: то, что прочитано один раз, забывается за 24247272 часа примерно на 8080%. Сильнее всего стираются детали реализации — границы циклов, тонкие моменты с типами, последовательность шагов. Идея в целом часто остаётся, но без деталей она бесполезна в момент, когда задача нужна.

Цель действий после разбора — поднять долю удержанного до 8080%+ за неделю и закрепить навык так, чтобы он переносился на похожие, но не идентичные задачи. Это и есть смысл тренировки: не «решить много задач», а «расширить класс задач, в которых данный шаблон вытаскивается рефлекторно».


Чек-лист «я понял» vs «я могу воспроизвести»

Перед тем как закрыть разбор, прогоните по чек-листу. Если хотя бы один пункт «нет» — закрывать рано.

Уровень «я понял»

  • Могу пересказать алгоритмическую идею двумя-тремя предложениями, не открывая текст разбора.
  • Понимаю, почему алгоритм корректен (доказательство, инвариант или интуиция — что было в разборе).
  • Могу назвать сложность по времени и по памяти, не подглядывая.
  • Понимаю, в каком сигнале условия прячется этот шаблон.

Достижение этого уровня — необходимо, но не достаточно. С него начинается работа, а не заканчивается.

Уровень «я могу воспроизвести»

  • Могу написать рабочий код с нуля на чистом редакторе, не глядя в разбор. До прохождения по всем примерам, без TL/RE/WA.
  • Могу написать тот же код через 2–3 дня и не вспомнить ни одной детали из заметок — но он соберётся за 20\le 20 минут.
  • Если в задаче поменять один параметр (массив стал двумерным; вместо суммы — XOR; вместо отрезка — подматрица), сам понимаю, как переделать решение.
  • Могу объяснить решение вслух так, чтобы кто-то, не видевший задачу, понял с первого раза.

Расстояние между двумя уровнями — это и есть тренировка. Без неё разбор остаётся в первом уровне, и при следующей встрече с задачей того же типа история повторяется.


План на 3 дня (минимальный)

Подходит, когда нет недели, или когда тема не центральная (вспомогательная техника, которую нужно «поднять до средней комфорта»).

День 1 — пересборка с нуля

После прочтения разбора отложите его на час (или дальше — на полдня). Затем возьмите ту же задачу и напишите решение с нуля, без подсмотра в код разбора. Можно подглядывать в свои конспекты («идея»), но не в готовый код.

Что важно:

  • Если код не пишется за 30304040 минут — открыть разбор, посмотреть именно тот фрагмент, на котором застряли. Не весь код целиком. После — закрыть и продолжить.
  • Если решение проходит — записать в свой лог: «задача XX, шаблон YY, написана с подсмотром: 0/1/2/0/1/2/\ldots раз».
  • Если решение не проходит — найти баг сами. Отладка тоже часть тренировки; разбор показал идею, но не сценарий отладки.

Цель дня — не «решить задачу», а прожить её руками: набрать структуру кода, ощутить узкие места, увидеть, где легко ошибиться.

День 2 — однотипная задача

Найдите 11 задачу той же темы на той же полосе сложности. Источник — теги Codeforces (dp, prefix-sums, bfs), acmp.ru архив по тематике, Яндекс Контест архивы. Решайте без какой бы то ни было подсказки в начало. Если за 4040 минут идея не приходит — посмотреть только условие в другой формулировке (пересказать своими словами, выписать ограничения). Если за 6060 минут идея всё ещё не пришла — выяснить, почему: «нужна другая техника» или «техника та же, но другой ракурс»? Это анализ важнее, чем готовое решение.

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

День 3 — stretch-задача

Берётся задача той же темы, но на 200200300300 пунктов выше по CF-сложности. Цель — не обязательно дорешать, а попытаться применить шаблон. Если он подходит без изменений — отлично, тема плотно встала. Если требуется доработка (другое состояние, другая структура данных поверх) — это сигнал, в каком направлении расширять навык дальше.

Stretch не оценивается «решил / не решил». Оценивается: «я понял, чем эта задача отличается от моей основной» — то есть разница между уровнем тренировки и более высоким.


План на 7 дней (стандартный)

Подходит, когда тема центральная для текущей траектории (например, DP — если вы на полосе CF 1400140017001700). Семь дней — компромисс между «достаточно для закрепления» и «не слишком долго, чтобы темп тренировки сохранился».

День 1 — пересборка с нуля

Как в трёхдневном плане. Если код пишется за 20\le 20 минут без подсмотра — переходить к дню 22 можно прямо сегодня, не теряя время.

День 2 — две однотипные задачи

Две задачи того же типа на той же полосе. Между ними — короткая пауза (30306060 минут), чтобы каждая воспринималась самостоятельно, а не как «продолжение первой».

Цель — отследить общее место: где в обеих задачах сработала та же часть шаблона. Эта «общая часть» — собственно шаблон. То, что в задачах разное, — «обвязка», специфика условия.

День 3 — отдых от темы

Контр-интуитивный, но критически важный пункт. Не трогать эту тему в этот день. Решайте задачи по другой технике: если тренируете DP — берите день на жадные / реализацию / графы. Если тренируете прирост на одной теме — день паузы по этой теме повышает удержание материала на следующих повторениях. Это феномен интервального повторения: вспомнить через 4848 часов сложнее, чем через 2424, но именно эта сложность фиксирует материал в долгую память.

День 4 — повтор задачи дня 1

Та же задача, что в день 1. Пишите код с нуля на чистом редакторе. Засеките время. Если код собрался за 20\le 20 минут — успех, шаблон встал. Если занимает 4040+ — это сигнал: между днём 1 и днём 4 не было настоящего удержания, нужна ещё одна задача того же типа.

В Anki-логике это «вторая карточка с интервалом 33 дня». На третьей карточке (день 77) интервал расширится до 77 дней; при успехе следующий повтор — через 14142121 день, дальше реже.

День 5 — задача +200 CF

Stretch-задача из плана-3, но в семидневном цикле она встаёт точно на 55-й день — когда основной шаблон уже закреплён. Это не первое касание сложности, а проверка, расширяется ли шаблон. Если задача поддаётся за 60609090 минут без подсмотра — отлично, темп тренировки правильный.

День 6 — самостоятельный мини-проект

Выберите задачу, по которой по плану-3 уже была одна тренировочная попытка (день 22). Решите её повторно, но при этом запишите свой собственный разбор в формате блог-статьи: идея, доказательство, код, проверка на примерах, типичные ошибки. Не подсматривая в чужой текст.

Это самый сильный приём закрепления: писать о теме заставляет проверить, где у понимания дыры. Если в разборе появляются места «здесь работает, почему — не знаю, надо проверить» — это и есть точки, которые в долгой памяти ещё не закрепились.

День 7 — финальная задача

Одна новая задача того же типа на текущей полосе сложности. Без подсмотра в любые материалы. Если решается за время боевого контеста (30306060 минут) — тема закрыта, можно переходить к следующей. Если нет — тема нуждается в ещё одной итерации 33-дневного цикла.


Какие задачи брать для тренировок

Несколько источников, которые работают рядом друг с другом:

  • Codeforces problemset с фильтром по тегу темы и сложности ±100\pm 100 от исходной задачи. Это основной источник: критическая масса, понятная сложность, мгновенная проверка.
  • acmp.ru — широкий архив, особенно полезен на полосах CF 80080015001500 (там много простых, но содержательных задач). Меньше теговой структуры, больше «прочитать условие и узнать тему».
  • Яндекс Контест — открытые архивы Яндекс Кубка / Яндекс Алгоритм. Хороши для полосы 1500150020002000, формат условий ближе к ICPC.
  • Codeforces Round Editorials — после серии ваших тренировок одной темы прочесть разборы Round, в которых эта тема была. Полезно увидеть, как авторы задач формулируют тему «в чистом виде» и какие отсечения они закладывают.

Что не имеет смысла:

  • Брать задачи далеко за пределом текущей полосы (выше +400). Они тренируют не текущий шаблон, а способность импровизировать; на этапе закрепления техники это контр-продуктивно.
  • Решать много одинаковых задач без анализа. Десять задач на «префикс + хешмап» — это не десять разных тренировок, а одна, повторённая 1010 раз. Подходит для самой первой недели; дальше требуется разнообразие.
  • Брать «случайные задачи» из ленты Codeforces. Без фильтра по теме сложно отследить, что именно тренируется в данный момент.

Типичные ошибки самостоятельной тренировки

  1. Подмена решения чтением. Прочитал три разбора подряд — кажется, что «потренировался». Это работа над уровнем «я понял»; уровень «я могу воспроизвести» так не достигается. Лекарство: на каждый прочитанный разбор — минимум одна задача того же типа, написанная руками.
  2. Лжеповторение без интервала. Решить задачу дважды подряд в один день — не повторение, а вторая сборка по тёплому следу. Память не работает в режиме «час назад вспомнил, значит запомнил». Лекарство — день паузы между сборкой и повтором.
  3. Игнор stretch-задачи. Без задачи за пределом текущей полосы шаблон закрепляется только в узком окне сложности. На контесте сложность непредсказуема. Лекарство — обязательно одна задача +200+200 к текущему уровню в плане.
  4. Перегрузка одной темой. Подряд 55 дней одна тема — фаза неэффективности наступает на 33-й день, когда мозг «перенасытился» и удержание падает. Лекарство — план 77 дней с разрывом в третий день.
  5. Запись «решил» без записи «как именно». Лог тренировок без отметки «с подсмотром / без / сколько раз застрял» не позволяет анализировать прогресс. Лекарство — короткие пометки: «XX, 11 подсмотр, 4040 мин».
  6. Игнор stretch на +400+400 CF в день 55. На полосе 15001500+ это особенно заметно: расширение шаблона прокачивается именно на «чуть-чуть выше», а не на «сильно выше».
  7. Решение без анализа времени. Если задача дня 44 заняла в 22 раза больше времени, чем задача дня 11 той же сложности, — это сигнал, что что-то «не село». Лекарство — фиксировать время в логе.

Где помогает тренажёр

После того как план составлен, нужен напарник для отладки и проверки. Тренажёр CodePal заточен под этот сценарий: пишете решение, ловите ошибку, и вместо того чтобы тратить 3030 минут на бисекцию принтов, обсуждаете с AI-партнёром, где конкретно в идее может быть пробой. AI не диктует решение, а помогает довести до состояния, в котором баг ловится за 551010 минут.

Это особенно ценно на этапе тренировки, потому что готового разбора в этот момент уже нет — задача новая, никаких «открыть текст» нельзя. Альтернатива «спросить друга» доступна не всегда; тренажёр на этом этапе закрывает узкое место.

Второе — фиксация уровня. Тренажёр держит лог сессий: какие задачи разобраны, сколько подсмотров, какие шаблоны проседают. Через две недели тренировок видно, какие темы реально закрепились, а какие нужно прогнать ещё раз.


Итого

  • Между «я понял» и «я могу воспроизвести» — несколько дней целенаправленной практики. Без них один прочитанный разбор остаётся отметкой в логе, а не навыком.
  • План на 3 дня: пересборка с нуля → однотипная задача → stretch. Минимум для не центральной темы.
  • План на 7 дней: пересборка → две задачи → пауза → повтор первой → stretch → собственный разбор → финальная новая задача. Стандарт для центральной темы.
  • Главный приём интервального повторения — день паузы между касаниями одной темы. Без него удержание не работает.
  • Главное измерение прогресса — не «решил / не решил», а «время до решения» и «количество подсмотров». Фиксируйте оба в логе.
  • Stretch-задача обязательна. Без неё шаблон закрепляется только в узком окне.

В серии: Методология подготовки

  1. 1Как читать алгоритмическое условие: разметка, подводные камни, типичные ловушки
  2. 2Codeforces, acmp.ru, Яндекс Контест: какую платформу выбрать первой и как их комбинировать
  3. 3Траектория от 800 к 2000 на Codeforces: какие темы держат прогресс
  4. 4Как отлаживать олимпиадные задачи: поиск бага за минимальное время
  5. 5Что делать после разбора: план тренировки на 3 и 7 дней — эта статья

Попробуй разобрать похожие задачи

В CodePal AI-партнёр подсказывает идею, а не ответ. Разбор в диалоге, код проверяется в браузере.