Олимпиадное программирование

Начинающий
Статус
Оффлайн
Регистрация
8 Фев 2022
Сообщения
2
Реакции[?]
0
Поинты[?]
0
Есть на форуме олимпиадники по программированию?
Если есть, то скажите, пожалуйста, как вы готовились и где? Что нужно знать? Сайты там, книги может быть и всё остальное
Буду безмерно благодарен тем, кто поможет, перехожу в 10 класс и хочу уже взяться за олимпиадное программирование
 
money++
Разработчик
Статус
Оффлайн
Регистрация
14 Июн 2018
Сообщения
638
Реакции[?]
339
Поинты[?]
22K
Привет. Победитель белорусской олимпиады школьников по программированию, призер многих российских (открытка, технокап и прочие) и разных студенческих командных (ICPC, БГУ, БГУИР) на связи.

Для начала надо понимать что если нет никакого бэкграунда то за полтора года прошариться до уровня призеров сложно, нужно будет жестко ебашить. Я тоже начинал свой путь по олимпиадам по программированию в 10м классе, но а) с многолетним опытом олимпиад по математике позади, б) с пускай и небольшими, но уже какими-то познаниями в программировании.

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

За примерами ходить далеко не надо - у меня был одноклассник, который к 10му классу максимум проходил до уровня Минска (белорусский аналог предпоследнего этапа всероса), но по некоторым причинам в Беларуси Минск это самый простой путь, несмотря на то, что людей больше, чем в других областях. Два года он жестко ебашил, и в 11м классе прошел на международную олимпиаду и взял там медаль, обогнав много людей с куда более большим опытом.

// конец типа предисловия

---------

Как готовиться:

Вообще в идеале найти курсы. Там отзывы чекнуть, посмотреть какие олимпиадники оттуда вышли, какие у них результаты. Это куда лучше, чем учиться самостоятельно. Если хорошие курсы найдешь, то там тебя сами всему научат. Так что дальнейшая часть гайда в основном на случай если ты таки одинокий волк или просто норм курсов нет под рукой (среди успешных олимпиадников есть и самоучки, и не сильно мало), но я бы все равно ее дочитал)

Итак, план действий:

- Выбор языка программирования:
Если ты решил реально заниматься олимпиадами, то в современных реалиях учить нужно С++ и это не обсуждается. Питон слишком медленный, Паскаль и голый Си слишком устарели, Джава совсем для других задач (хотя вроде как Котлин кому-то заходит из олимпиадников, там не нужно ебаться с классами, но его а) много на каких олимпиадах нет, б) язык слишком молодой, на плюсах куда больше гайдов, в) смотри пункт с Питоном), остальные ЯП редко доступны в системах тестирования, да и не для того создавались.
Исключение: в будущем неплохо выучить хотя бы базовый синтаксис питона для решения заадч в которых нужна длинная арифметика, но пока не забивай этим голову.

- С чего начать:
С изучения ЯП) Экзамены позади, лето впереди, в интернете много материала - лопату в руки и вперед. В начале слишком глубоко уходить в плюсы не надо - базовый синтаксис, циклы, ветвления, работа с массивами и строками, функции, ввод и вывод (стандартный и файловый). ООП нужно, но базового достаточно, не нужно лезть во всякие там виртуальные наследования.

- Вход в СП (спортивное программирование):
Когда база С++ усвоена, можно начинать решать задачи. Самая популярная платформа сейчас
Пожалуйста, авторизуйтесь для просмотра ссылки.
, там есть архив старых задачек и постоянно проходят контесты (в том числе отборочные на, например, технокап). Более олдовая тема это
Пожалуйста, авторизуйтесь для просмотра ссылки.
, тоже хороший сборник задачек (оттуда кстати можно решать простые задачки пока только начинаешь изучать С++). К еолимпу кстати где-то есть типа решебник, но, насколько я помню, там только код без объяснений.

Оказывается, что для решения большинства задач нужно знать специальные алгоритмы и структуры данных (ну и конечно уметь их реализовать).

В интернете мб где-то есть норм гайд по всему этому, но лучше конечно найти хорошую книгу. Я рекомендую "Олимпиадное программирование (Антти Лааксонен)". Но оговорка: я познакомился с этой книгой, когда получил ее в награду за MWJ (что это за зверь расскажу позже), поэтому начало, нацеленное на новичков, я пробежал по диагонали, так как все знал, поэтому на 100% ручаться не могу. То во что я вникал написано хорошо, темы вначале выбраны правильные, так что особо поводов сомневаться в ней я не вижу и таки рекомендую.

- Прокачка себя в СП:
Practice makes perfect. Решай задачи, пиши контесты (ака олимпиады). Но не все так просто.

Все решить вряд ли получится. Особенно на контестах, где времени не так много. Так что после контеста ищешь разбор (или людей которые решили задачу) и смотришь как она решалась. Запомнил решение? Выучи из него новые алгоритмы, а потом ОБЯЗАТЕЛЬНО напиши его сам и зашли на полный балл. Такое называется дорешиванием, и оно просто необходимо если хочешь развиваться и достигать нормальных уровней.

Кроме контестов есть еще всякие "школы" которые работают на каникулах. Какие хорошие я не знаю, раньше была только Зимняя Компьютерная Школа (ныне это Moscow Workshops Junior), она проходит в МФТИ на зимой и на нее надо отбираться. Плюс она стоит денег, если у тебя еще нет дипломов с крутых олимпиад. Но это того стоит. Это крутая атмосфера топовых олимпиадников и две недели топовой подготовки к финалами Технокапа и Открытой Олимпиады школьников (открытки), которые проходят в это же время. Ну и до заключительного этапа всероса там уже недалеко.

Ну и плюс естественно сборы, но это уже везде местные обычаи и особенности.

-------

Если вдруг более конкретные вопросы будут можешь писать в тг
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
Начинающий
Статус
Оффлайн
Регистрация
8 Фев 2022
Сообщения
2
Реакции[?]
0
Поинты[?]
0
Привет. Победитель белорусской олимпиады школьников по программированию, призер многих российских (открытка, технокап и прочие) и разных студенческих командных (ICPC, БГУ, БГУИР) на связи.

Для начала надо понимать что если нет никакого бэкграунда то за полтора года прошариться до уровня призеров сложно, нужно будет жестко ебашить. Я тоже начинал свой путь по олимпиадам по программированию в 10м классе, но а) с многолетним опытом олимпиад по математике позади, б) с пускай и небольшими, но уже какими-то познаниями в программировании.

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

За примерами ходить далеко не надо - у меня был одноклассник, который к 10му классу максимум проходил до уровня Минска (белорусский аналог предпоследнего этапа всероса), но по некоторым причинам в Беларуси Минск это самый простой путь, несмотря на то, что людей больше, чем в других областях. Два года он жестко ебашил, и в 11м классе прошел на международную олимпиаду и взял там медаль, обогнав много людей с куда более большим опытом.

// конец типа предисловия

---------

Как готовиться:

Вообще в идеале найти курсы. Там отзывы чекнуть, посмотреть какие олимпиадники оттуда вышли, какие у них результаты. Это куда лучше, чем учиться самостоятельно. Если хорошие курсы найдешь, то там тебя сами всему научат. Так что дальнейшая часть гайда в основном на случай если ты таки одинокий волк или просто норм курсов нет под рукой (среди успешных олимпиадников есть и самоучки, и не сильно мало), но я бы все равно ее дочитал)

Итак, план действий:

- Выбор языка программирования:
Если ты решил реально заниматься олимпиадами, то в современных реалиях учить нужно С++ и это не обсуждается. Питон слишком медленный, Паскаль и голый Си слишком устарели, Джава совсем для других задач (хотя вроде как Котлин кому-то заходит из олимпиадников, там не нужно ебаться с классами, но его а) много на каких олимпиадах нет, б) язык слишком молодой, на плюсах куда больше гайдов, в) смотри пункт с Питоном), остальные ЯП редко доступны в системах тестирования, да и не для того создавались.
Исключение: в будущем неплохо выучить хотя бы базовый синтаксис питона для решения заадч в которых нужна длинная арифметика, но пока не забивай этим голову.

- С чего начать:
С изучения ЯП) Экзамены позади, лето впереди, в интернете много материала - лопату в руки и вперед. В начале слишком глубоко уходить в плюсы не надо - базовый синтаксис, циклы, ветвления, работа с массивами и строками, функции, ввод и вывод (стандартный и файловый). ООП нужно, но базового достаточно, не нужно лезть во всякие там виртуальные наследования.

- Вход в СП (спортивное программирование):
Когда база С++ усвоена, можно начинать решать задачи. Самая популярная платформа сейчас
Пожалуйста, авторизуйтесь для просмотра ссылки.
, там есть архив старых задачек и постоянно проходят контесты (в том числе отборочные на, например, технокап). Более олдовая тема это
Пожалуйста, авторизуйтесь для просмотра ссылки.
, тоже хороший сборник задачек (оттуда кстати можно решать простые задачки пока только начинаешь изучать С++). К еолимпу кстати где-то есть типа решебник, но, насколько я помню, там только код без объяснений.

Оказывается, что для решения большинства задач нужно знать специальные алгоритмы и структуры данных (ну и конечно уметь их реализовать).

В интернете мб где-то есть норм гайд по всему этому, но лучше конечно найти хорошую книгу. Я рекомендую "Олимпиадное программирование (Антти Лааксонен)". Но оговорка: я познакомился с этой книгой, когда получил ее в награду за MWJ (что это за зверь расскажу позже), поэтому начало, нацеленное на новичков, я пробежал по диагонали, так как все знал, поэтому на 100% ручаться не могу. То во что я вникал написано хорошо, темы вначале выбраны правильные, так что особо поводов сомневаться в ней я не вижу и таки рекомендую.

- Прокачка себя в СП:
Practice makes perfect. Решай задачи, пиши контесты (ака олимпиады). Но не все так просто.

Все решить вряд ли получится. Особенно на контестах, где времени не так много. Так что после контеста ищешь разбор (или людей которые решили задачу) и смотришь как она решалась. Запомнил решение? Выучи из него новые алгоритмы, а потом ОБЯЗАТЕЛЬНО напиши его сам и зашли на полный балл. Такое называется дорешиванием, и оно просто необходимо если хочешь развиваться и достигать нормальных уровней.

Кроме контестов есть еще всякие "школы" которые работают на каникулах. Какие хорошие я не знаю, раньше была только Зимняя Компьютерная Школа (ныне это Moscow Workshops Junior), она проходит в МФТИ на зимой и на нее надо отбираться. Плюс она стоит денег, если у тебя еще нет дипломов с крутых олимпиад. Но это того стоит. Это крутая атмосфера топовых олимпиадников и две недели топовой подготовки к финалами Технокапа и Открытой Олимпиады школьников (открытки), которые проходят в это же время. Ну и до заключительного этапа всероса там уже недалеко.

Ну и плюс естественно сборы, но это уже везде местные обычаи и особенности.

-------

Если вдруг более конкретные вопросы будут можешь писать в тг
Пожалуйста, авторизуйтесь для просмотра ссылки.
Ну, для начала - спасибо большое за такой развёрнутый ответ)
Ну смотри, я не питаю надежд взять всерос, больше хочется писать вузовские олимпиады или олимпиады полегче всероса, но посмотрим во время пути, может быть обрету уверенность и попробую себя на всеросе;
База плюсов в процессе изучения, хотя я когда-то их учил, но изучение языка в промышленных целях и олимпиадных чуть разное;
Про codeforces понял, спасибо, буду там решать задачи;
Иронично, что я вчера, не зная о твоём сообщении (Просто долго одобряли модераторы этот пост), заказал эту книгу, должна прийти 4 июля);
Вопрос возник: где лучше всего изучать алгоритмы, просто вряд ли Лааксонена хватит для успешного написания многих олимпиад?
Да и кстати бывает сижу в чате МИРЭА и страшно даже становится когда вижу всякие непонятные слова (прикрепил изображения снизу)
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
Начинающий
Статус
Оффлайн
Регистрация
30 Мар 2022
Сообщения
7
Реакции[?]
0
Поинты[?]
0
Если твоя цель взять олимпиады для поступления в ВУЗ - то проще всего будет взять условную высшую пробу и пойти в вышку/взять 100 баллов по инфе и пойти на пми физтеха норм написал егэ и норм показав себя на собесе.
К вопросу о том как готовиться, для начала определись с языком, а лучше иметь в запасе сразу 2-3 языка(но ок, ограничимся 1-2 тк времени не так много)
Очень хорошие курсы к перечням по инфе у Трушина на ****форде, так же можно посмотреть на ютубе Хирьянова, у него тоже оч классные уроки.
Самую базу синтаксиса и алгосов можно наработать благодаря хэндбукам Яндекса
Сливы и ссылки на все могу в тг дать - пиши
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
Сверху Снизу