Вспомним какие темы чаще всего встречаются на собесах.
🟢Группа 1
Префикс сумма, бинарный поиск, два указателя, хеш-таблицы.
🟡Группа 2
Обход в ширину, обход в глубину, алгоритм Дейкстры, алгоритм Флойда, деревья.
🔴Группа 3
Динамическое программирования, монотонный стек, дерево-отрезков, теория чисел.
Задачи из группы 1 очень часто встречаются на собесах.
Задачи из группы 2 реже, но все равно встречаются, эта группа больше связана с графами.
Задачи из группы 3 встречаются очень редко (кроме HFT компаний и им подобных).
Самое сложное и самое важное — это изучение тем из первой группы.
Во второй группе вам предстоит освоить только алгоритмы на графах, но благодаря знаниям, полученным в первой группе, вы уже будете иметь представление о подходах и идеях, которые помогут вам решать сложные задачи. Большинство ключевых и основополагающих идей сосредоточены именно в первой группе.
Специально для вас, товарищи, наш преподаватель Тимур (регулярно проводит собесы в Яндексе) подготовил ➡️ Roadmap по группе 1.
Важно, чтобы у вас была прочная база знаний по всем четырем темам, прежде чем приступать к сложным задачам. Это связано с тем, что задачи тесно пересекаются между собой. Например, задачи на префикс суммы пересекаются с задачами, связанными с двумя указателями и хеш-таблицей.
В таблице по каждой теме я подготовил простые задачи (зеленым цветом) эти задачи дадут вам базовые понятия. Дальше вам предстоит перейти на более сложные задачи (красный цвет).
Как решать красные задачи с Roadmap?
-Отмечу что это не рандомные задачи, а задачи с фундаментальными идеями.
-Это будет небыстрый и непростой путь, но любой может решить эти задачи, главное старанье.
-Вы можете решать задачи в любом порядке. Если не получается решить задачу с литкода в течение часа то можно смотреть разбор, но не задачи с codeforces. Задачи с codeforces достаточно сложные и скорее всего на большинство задач не найдете разбор. Относитесь серьезно к задачам codeforces,они действительно дадут буст. (Если кому поможет, то можно относиться к задачам codeforces как к вызову).
Не совершай эти ошибки.
-Спрошу у гпт как решить задачу с codeforces. (Вы должны научиться решать эти задачи своими руками)
-Я посидел над задачей codeforces целый день и не смог решить, поищу разбор. (Иногда будет возникать соблазн найти разбор задач codeforces, особенно когда действительно попытались решить задачу, но нет, эти задачи должны решить только ВЫ, лучше отвлекитесь и порешайти литкод).
-Злоупотребление разбором задач с литкода. (В день когда решили задачу разбором отметьте ее, и вернитесь к ней через день).
-Посмотрю разбор на работе, проанализирую разбор во время работы, а вечером дома я закодю решение. (Очень плохой подход, нужно сфокусироваться на задаче, без переключений с задачи на работу).
Советы.
-От большого количество информации вы скорее всего будете замечать, что не получается решать/ понять задачи. Вам нужно сделать передышку, и вы увидите, что через несколько дней эти же задачи будут даваться легче. (Это научный факт)
-Фокус важен, выделяй себе время на решения задач, чтобы тебя никто не отвлекал.
-Будь готов на долгую работу, скорее всего за пару месяцев выйти на хороший уровень с нуля не получится.
Прошу очень внимательно отнестись к посту, товарищи, все выводы и советы сформированы на основе многолетнего опыта преподавания не только Тимура, но его топовых коллег по цеху. В общем обязательно поддержите огоньком 🔥 и поделитесь с другом. Это очень мотивирует нас делать такой же топовый контент для вас! Если пост наберет много огоньков 🔥 , то соберем Roadmap для второй группы.
Автор: @algoses