Привет, меня зовут Сергей Вольнов и я сейчас учусь на первом курсе в НИУ ВШЭ на программе прикладной математики и информатики. Если поступать туда по ЕГЭ, то проходной в этом году был 304 балла по трем предметам, но выиграв олимпиады туда можно без вступительных испытаний.
В 10 и 11 классе я стал призером заключительного этапа Всероссийской Олимпиады Школьников по Информатике (ВСОШ) и даже стал медалистом на международной Жаутыковской олимпиаде по Computer Science. Призерство ВСОШ дало мне возможность поступить в любой ВУЗ на информатическое направление по БВИ и я выбрал ВШЭ.
В этой статье я хотел бы рассказать о том как готовился к олимпиадам по информатике, какие есть кружки/курсы и как правильно вести себя на турах.
Немного предыстории
В 6-7 классе я занимался физикой и в конце 7 класса даже стал призером заключительного этапа олимпиады Максвелла по физике (что-то типо ВСОШ для младших классов). С 8 класса (агрессивно с 9) я ботал олимпиадную информатику и в итоге в 10 и 11 классах стал призером ВСОШ по информатике. Я не считаю себя каким-то мега-гением, а скорее думаю, что при должном усилие заботать можно все - осталось лишь приложить усилие.
Олимпиадная информатика VS жизнь
Вообще, олимпиадная информатике довольно сильно отличается от обычной. Весь мир олимпиадной информатике крутится вокруг различных алгоритмов и структур данных, чтобы уметь считать какие-то вещи оптимально. В обычной разработке с этими алгоритмами сталкиваешься куда реже и в сильно меньшем объеме по сравнению со школьными олимпиадами, но уметь применять базовые алгоритмы все равно необходимо (+ их часто спрашивают на собеседованиях). Так что эта статья может быть полезна и тем, кто просто решил подтянуть свои знания в этой области, но не знает с чего начать.
Все ресурсы подготовки к ВСОШ можно разделить на три основных блока: курсы и кружки, олимпиадные смены и летние школы и онлайн ресурсы для самоподготовки. Давайте сейчас подробнее рассмотрим каждый из этих блоков.
Курсы и кружки по подготовке
Обычно курсы составляют наибольшую часть подготовки, так как это занятия на постоянной основе, включающие в себя как практику так и теорию, так что поступить на хорошие курсы это уже половина пути к вашей победе. Ниже я подробно расскажу о тех курсах, которые проходил сам и оставлю ссылочки на те ресурсы, о которых только слышал.
Tinkoff Generation | Оффлайн/Онлайн
Однозначно лучший из курсов, который я проходил. Занятия проходят раз в неделю по 5 часов, на неделю дается контест с задачами на пройденную тему, есть разборы и дорешки контестов, а так же семинары на которых решаете теоретические задачи. Еще есть возможность писать дистанционные туры и в принципе крутое олимпиадное комьюнити.
Есть несколько уровней сложности: C, B', B, A', A, каждый уровень - годовой курс. Свой первый всерос я взял, пройдя B' и B. Сам курс бесплатный, но для поступления нужно решить отборочный контест, который проходит в конце августа или пройти донабор в начале январе. За анонсами можно следить в их телеграмм канале.
Кружки от ЦПМ | Оффлайн
В 9 классе ходил на кружок в центр педагогического мастерства (ЦПМ). Сами занятия были выстроены хорошо, но одного этого кружка было бы маловат, так как это всего 3 часа в неделю (для сравнения, в Тинькоффе 5 часов в неделю) и контесты в качестве домашнего задания меньше. Думаю, может быть неплохим вариантов в качестве дополнительного кружка.
Занятия в школе | Оффлайн
Иногда в школах есть свои кружки по информатике - их качество может сильно варьироваться в зависимости от школы, но мне повезло и у меня был очень сильный кружок (я учился в Физтех-лицее им П. Л. Капицы), в который я ходил в 10 классе. Возможно в вашей школе тоже есть что-то такое.
Ссылочки на разные кружки/курсы, в которых сам не занимался
Школа программистов | Платно/Бесплатно
Яндекс Практикум | Платно
Фоксфорд | Платно
Сириус Курсы | Бесплатно
Курс на Stepik по введению в С++ | Бесплатно
Онлайн ресурсы для самостоятельной подготовки
Вообще есть довольно много ресурсов, где можно решать алгоритмические задачи (LeetCode, Informatics, Timus и тд), но я за время своей подготовки пользовался в основном Codeforces и чуть-чуть Informatics (для прорешивания туров ВСОШ прошлых лет).
Codeforces это сайт, на котором пару раз в неделю проводятся микро соревнования, которые можно писать для тренировки в "боевых условиях". Также имеется довольно большой архив задач для самостоятельной подготовки. Всем советую его решать, так как это является хорошим приближением (по формату) разных олимпиадок + дополнительная практика.
Образовательные интенсивы
Помимо кружков и курсов есть еще один распространенный формат подготовки - это различные летние школы, сборы и образовательные смены. Их суть заключается в том, чтобы в короткие сроки (обычно 2-3 недели) дать максимум подготовки. Каждый день у вас есть много пар связанных с олимпиадным программированием, которые зачастую делятся на два типа: вначале идет лекция, а потом решаете контест на пройденную тему + дорешка в свободное время. Обычно вся эта активности идет с утра и часов до 17 (дальше отдых), так что бота реально много, но и прокачивает хорошо.
Олимпиадные школы от МФТИ (ЛОШ/ЗОШ) | 2 недели, Платно
Это была моя первая олимпиадная школа, в которую я поехал летом после 8-ого класса. Я бы посоветовал ее именно в качестве начального варианта, так как туда не очень сложный отбор и довольно неплохой уровень обучения. Так что это хорошая возможность подготовиться к отборочным во всякие кружки по типу Тинькоффа (которые проходят в конце лета), ведь чтобы в них пройти нужно уже иметь некоторый бэкграунд.
Сириус | 3 недели, Бесплатно
Возможно вы про него уже где-то слышали, но для тех, кто нет - это такой образовательный центр в Сочи, с очень сильным преподавательским составом и классными условиями проживания. Он проводит смены по разным направлениям несколько раз в год, в том числе и информатике. Актуальные смены можно отслеживать на их сайте.
Сам был в нем 3 раза на информатических и 2 раза на физических сменах. Для того, чтобы туда попасть нужно пройти отбор (не очень легкий) или уже показать хорошие результаты на региональном/заключительном этапе. Может хорошо прокачать даже опытных олимпиадников, так что всем советую мониторить его программы и подаваться.
Летняя Компьютерная Школа (ЛКШ) | 2 недели, Платно
Сильная олимпиадная школа, о которой не раз слышал хорошие отзывы. Сам в нее прошел в 9 классе, но ее в том году отменили из-за ковида, так что съездить не смог, а в 10 уже и сам всерос взял. Сложность отборочного варьируется в зависимости от того на какую параллель хотите ехать, так что можно подобрать под себя. Отбор проходит где-то в начале мая.
ШОП Иннополис | 7-10 дней, Платно
Ездил один раз в 10 классе. Если честно, не очень помню подробности, но вроде было нормально.
Региональные Сборы | 1-2 недели, Бесплатно
В многих регионах, в частности в московской области, проводятся сборы по подготовке к региональному и/или заключительному этапу ВСОШ. Для того, чтобы на них попасть нужно просто выйти на соответствующий этап и подать заявку через сайт. Вообще, советую не упускать шанса лишний раз подготовиться, так что если у вас в регионе такое проводят, то участвуйте.
Ссылочки на разные интенсивы, в которых сам не занимался
Летняя школа по компьютерным наукам (ЛШКН) | Платно, Оффлайн
Летняя компьютерная школа (ЛКЛ) | Платно, Оффлайн
RuCode | Бесплатно, Онлайн
Moscow Workshops Juniors | Платно, Онлайн
Зимний олимпиадный марафон от СУНЦа | Платно для не СУНЦа, Онлайн/Оффлайн
Как ботать эффективно?
Курсы и интенсивы можно проходить по-разному. Буквально один совет, чтобы повысить эффект от курсов в несколько раз: ❗️Дорешивайте задачи❗️. Если вы просто решаете задачи, то применяете те знания, что уже у вас есть, а если вы его после разбора дорешиваете, то узнаете кучу нового. Я это осознал только к 10 классу и стал полностью закрывать контесты на дорешке - реально в разы эффективнее.
Во многих кружках и школах проводятся разборы, так что остается только закодить (просто осознать разбор сильно хуже откладывается в голове). На codeforces можете дорешивать только те задачи, над которыми успели подумать во время раунда (разборы там тоже публикуются). В общем не пренебрегайте этим сильным инструментом.
Поведение на турах
Безусловно, подготовка играет решающую роль в твоей победе на олимпиаде, однако когда дело доходит до написания самого тура очень важно выложится на максимум и показать всю силу своих скиллов. Реальные условия олимпиады зачастую отличаются от тех, в которых ты готовился: много стресса, строгое ограничение по времени и высокое значение самой олимпиады явно не упрощают процесс написания контента. Поэтому в этой части я расскажу о том, какие приемы использовал во время написания туров в боевых условиях и как выложится на свой максимум.
До тура
Для начала разберем, что стоит делать, когда тур еще не начался, но уже на носу.
Во-первых, настройте себе режим дня заранее! Очень часто замечал, что люди всю неделю до тура идут спать после 00, а в последний день такие "лягу в 22, завтра ведь в 6 утра вставать". В итоге ложились и просто не могли заснуть до часу ночи, а потом писали региональный этап, поспав 5 часов. Не надо так)
Во-вторых, за день до тура (а лучше за два) ботать запрещено, чтобы дать мозгу отдохнуть - все равно перед смертью не надышишься. В идеале просто много гулять, можно поиграть в настольные/спортивные игры или позаниматься еще чем-нибудь, что не требует больших умственных усилий.
Перед туром нужно хорошо поесть, чтобы хватило надолго (в идеале где-то за час до тура). В дополнение к шоколадкам на олимпиаду мне еще нравилось брать чай с сахаром (быстрые углеводы) и какую-нибудь булочку, так как на одном шоколаде может быть сложно 5 часов писать тур.
Еще я перед туром съедал по 3 аскорбинки, так как однажды услышал от одного препода, что они разгоняют мозг немного. 99%, что это полная лажа, но тем не менее я их ел))
На туре
Теперь давайте пройдемся по основным правилам, которыми я старался следовать на турах и о которых я не раз слышал от своих преподавателей.
Важно: основная цель на туре это не решить много задач, а набрать много баллов.
После тура не должно быть ни одной подгруппы, которая "легкая, но просто прочитал в последние 5 минут и не успел решить".
Если задача не идет - переключитесь и повыбивайте баллы где можете (она в фоне все равно будет думаться).
Выход в туалет - отличный способ проветриться, не стоит им пренебрегать.
К середине тура не должно быть ни одной непрочитанной задачи.
Если задачка не придумывается сходу, то хорошей практикой будет решать ее по подгруппам, так как часто жюри их делают так, чтобы они подводили к полному решению.
Чтобы меньше нервничать мне помогала следующая парадигма: "моя задача решить на мой максимум, чтобы я ни о чем не жалел после тура, а остальное от меня не зависит (стану ли я в итоге призером/победителем или нет)". В таком случае, даже если в этом году загробили B, то ты сможешь переключиться, а не загоняться по этому поводу весь раунд и решать B на полный балл вместо выбивания баллов.
Тайминги по решение задач на туре
На региональном этапе хорошей стратегией может оказаться следующая:
1. A и B решаете за первые час-два
2. Потом закрываете все подгруппы, который можете в D
3. Оставшееся время спокойно решаете C.
На заключительном этапе:
1. A и B решаете за первые час-два (если B не идет, то можно переключится на D)
2. Потом закрываете все подгруппы, который можете в D
3. Оставшееся время спокойно решаете C (и B, если еще не дорешали ее).
Второй тур
На второй нужно идти так, будто это первый, опять решать все на максимум и никак не ориентироваться на баллы первого тура. Второй тур очень сильно влияет, так что даже после успешного первого тура можно все слить и после слитого перого тура можно все вытащить. В остальном советы такие же, как и для первого дня.
Заключение
В этой статье я постарался как можно подробнее рассказать о ресурсах и трюках, которые помогли мне стать призером Всероссийской Олимпиады Школьников по информатике и надеюсь они помогут вам. Всем успехов!
P.S. Еще я веду канал в телеграмме - буду рад всех там видеть)