Привет, codeforces!
Я начинаю свой путь по спортивному программированию до 1600 рейтинга. В период этого времени я не буду участвовать в любых соревнованиях, только теория и практика. Ежедневно я буду выкладывать свой прогресс сюда — что изучил, что знал до этого, поэтому если интересно следите.
(P.S Если вы опытнее меня в спортивном программировании — буду рад любой помощи, совету или рекомендации. Можете подсказать интересные задачи, что можно изменить в плане по изучению и так далее. Ваш опыт для меня очень важен, особенно в начале пути.)
Также не забудьте посмотреть прогресс моего друга autaons!
План по изучению
2-я неделя:
- 2 дня: подтянуть базовые техники:
• бинарный поиск по ответу
• два указателя
• хэш-таблицы
• повторить C++3-я неделя:
- 1-2 дня: работа с мышлением
• Комбинаторика
• Решение и разбор задач с нетривиальными идеями (можете посоветовать?)
- 2-6 дней: рекурсия, динамическое программирование и обратный ход
• Рекурсия и подобные алгоритмы
• Обратный ход
• Динамическое программирование
- 7 день: повторение4-я неделя:
В процессе..
Неделя #1
Суббота: повторил двоичный поиск по ответу, два указателя (sliding window) и различные техники.
- Список решенных задач (23): Sphere Online Judge (AGGRCOW, задача о дровосеке), codeforces (Наидлиннейший k-хороший подотрезок, сотовая связь..) и Leetcode (типовые задачи на два указателя) - В процессе изучения: комбинаторика (Формула размещения и сочетания; Выводил формулы сам на основе задач о шарах); - Разбор задачи Div2B - [Gellyfish and Baby's Breath](https://mirror.codeforces.com/problemset/problem/2116/B?locale=en)
Неделя #2
Перед началом этого поста хотелось бы сказать: да-да, я знаю, что я обещал обновлять пост ежедневно, но кто из нас не человек? Надеюсь вы меня простите =).
Что ж.. с чего начать? За эту неделю произошло довольно многое.. во-первых, я не совсем следовал плану, который я написал выше. Прежде всего я работал над мышлением, то есть над моими problem solving issue и statement reading issue. Из этого всего я выделил несколько паттернов, которые часто встречаются в задачах:
- Сначала читай входные и выходные данные, быстро пробегаясь по сюжету, так как часто в задачах вся информация там сжатая (попробуйте потренироваться и вы увидите насколько я прав (не всегда)). - При чтении условии задумывайся о каждой детали, которое может подтолкнуть к решению. Оно странное? Возможно, это и есть тот ключ! - Записывайте частые паттерны. Например, лично я завел специальный файл, где описываю паттерны, что я заметил и насколько я был близок. - Разбирал абсолютно весь Div2-контест. Причем, не просто: "я понял, пойду дальше..", а думал как на самом соревновании я мог прийти к этому. Может, надо было посмотреть повнимательнее на формулу или перебрать числа и заметить закономерность. - НИКОГДА НЕ СМОТРЕЛ КОД ИЗ EDITORIAL!! Возможно, прозвучит странно, но я всегда стараюсь написать сам. Даже когда есть мощнейшее желание посмотреть решение автора я понимаю, что для моего развития это плохо.
В общем, это все, что я усвоил за эту неделю. Не буду упоминать задачи, которые были решены, ведь вы и так можете зайти на мой аккаунт и увидеть их.
↓ Если вам интересно, как всё пойдёт (как и мне), не забудьте поставить лайк!




