0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Как выиграть олимпиаду по информатике

Содержание

Как стать призёром Всероса по математике и информатике

Реальная история студента МФТИ о том, почему стоит участвовать во всевозможных олимпиадах и ездить ботать в летнюю школу

Долгая дорога к успеху в математике

К призёрству на Всеросе я плавно шёл с пятого класса. Раз в неделю мы приходили на кружок и по 2-3 часа решали задачи. Достаточно найти одного хорошего преподавателя, который даст базовые знания, а дальше — практиковаться как можно больше.

Постепенно ребята из нашего маткружка стали участвовать во всевозможных олимпиадах, причём по разным предметам. Опыт олимпиад стал ключевым в моей подготовке: я меньше волновался, больше узнавал разных подходов и методов решения задач. В результате на очередную олимпиаду приходил как к себе домой. Это не значит, что я был совершенно спокоен. На заключительном этапе в 11-ом классе было трудно справиться с волнением — всё-таки это большая ответственность.

Если вы школьник в 5-6 классе, советую не терять времени. В начале средней школы можно успевать заниматься всеми предметами, а не только самым любимым . Так вы определите, какое направление лучше даётся, чтобы потихоньку к концу учёбы на него делать упор.

Я, например, думал, что стану историком, когда в 6 классе занял одно из первых мест в Москве по этому предмету. Но в следующем году уровень конкуренции среди «историков» серьёзно возрос, я не успел под него подстроиться, а вот в математике успел — так определился мой путь.

На протяжении всей средней и старшей школы я посещал математический кружок раз в неделю. Домашних заданий в кружке нам не задавали: мы приходили, решали, кто сколько мог. Конечно, были и обычные уроки по школьной программе, но никаких других дополнительных занятий не было. Если математики слишком много — тоже плохо, может надоесть. Я знаю нескольких ребят, в том числе трёхкратного призёра Всероса по математике, которые побеждали в олимпиадах, занимаясь только в нашем кружке.

Я становился призёром заключительного этапа Всероссийской олимпиады школьников по математике три года подряд: в 9, 10 и 11 классах. Каждый раз я оказывался в числе «средних» призёров: не приближался к победителям, но и не был «в хвосте».

Так выглядит диплом призёра заключительного этапа Всероссийской олимпиады школьников

Короткий путь к призёрству по информатике

До 8 класса я был с компьютером «на вы», а потом в школу пришла новая преподавательница курса программирования, и я заинтересовался информатикой. Я понял, что не хотел бы заниматься теоретической наукой и увидел возможности применить знания на практике.

Поначалу в олимпиадной информатике я опирался на знания по математике и умение решать задачи. Так я прошёл на финальный этап ВсОШ: оказался третьим или четвёртым с конца, ничего не занял и уехал расстроенный.

В 10 классе я и вовсе не попал на заключительный этап, зато отправился в л етнюю компьютерную школу от «Московского центра непрерывного математического образования» . Это стало переломным моментом в истории с информатикой. Лучший способ подкачать знания по предмету — поучаствовать в школе, где несколько недель в интенсивном режиме преподают олимпиадные основы.

На выездной школе ученики не распыляются на другие школьные предметы, нет больших перерывов — все сосредоточены на занятиях. Мой уровень значительно вырос, и эффект летней школы сказался через год — я стал призёром на Всеросе.

Хотя я занялся информатикой довольно поздно и добился успеха на олимпиаде, не советую затягивать с подготовкой. Единицы выпускников способны взять призовые места, если начали готовиться во втором полугодии 10 класса. Нужно как минимум за 2-3 года готовиться к Всероссийской олимпиаде.

Выбор вуза: между МФТИ и НИУ ВШЭ

Я выбирал между факультетом инноваций и высоких технологий МФТИ и факультетом компьютерных наук Вышки. В обоих вузах были кафедры «Яндекса», а я мечтал поработать в этой компании. В Вышке факультет только открывался, и было непонятно, что из этого выйдет. Поэтому я послушал совета родителей и лучших друзей — «выбрать что-то проверенное» — и пошёл на Физтех.

Из нашей школьной олимпиадной компании трое пошли на Физтех и двое в Вышку. Мы до сих пор общаемся, так что я могу судить о сходствах и отличиях учёбы в наших вузах. С точки зрения качества образования, набора дисциплин и подготовки выпускников принципиальной разницы я не вижу. Ключевое отличие — уклад жизни, и если бы я снова поступал, то выбрал бы МФТИ.

Пожалуй, на Физтехе приходится больше ботать. Для меня это плюс, так как получается воспитательный эффект — меньшая нагрузка меня бы расслабила. Сейчас я привык много трудиться и всегда знаю, чем себя занять. В любом случае надо быть готовым к тому, что придётся работать больше, чем в школе. Свободного времени у студентов сильных вузов мало, тусовки — редкая возможность.

По моим ощущениям, Физтех — это что-то более коллективное, ВШЭ — более индивидуальное. МФТИ расположен в Долгопрудном, студенты вместе и учатся, и отдыхают — это создаёт командную атмосферу. Сначала я этого не понимал, но теперь считаю атмосферу единения главным преимуществом Физтеха.

Что запомнить

  • Найдите курс или кружок у преподавателя, который даст крепкие базовые знания по предмету.
  • С 5 по 9 класс участвуйте во всевозможных олимпиадах — набирайтесь опыта.
  • Если до выпускного осталось 2-3 года, сосредоточьтесь на паре любимых предметов.
  • Прокачайтесь в летнем образовательном лагере — крутые преподы и атмосфера интенсивного бота дадут существенный прирост знаний.
  • Перечислите, что для вас важно в выборе вуза, соберите информацию о каждом варианте и оцените университеты по каждому критерию. Или просто почитайте статью, как выбрать вуз.

Хотите получать новые статьи во «Вконтакте»?

Подпишитесь на рассылку полезных статей

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter

Школьник об олимпиадном программировании

Об обучении

Меня всегда привлекало программирование (что это такое я понял аж в 4 классе). Я был очень рад, когда в седьмом классе начали преподавать Pascal и различные вычислительные алгоритмы. Именно тогда я написал первый «Hello World!», алгоритм Евклида; изучил условные операторы, циклы, массивы.
С восьмого класса учителя приглашали на факультативы по информатике, где мы изучали графы, алгоритмы сортировки массивов и многое другое.

Задачи

Требования

От олимпиадника требуется написать программу на одном из принимаемых языков (обычно этот набор состоит из Pascal (сам пишу, никогда проблем не было), Delphi, C++, Java, Visual Basic, в последнее время добавляют C#, Python). После этого исходный файл отправляется в систему-песочницу, где он компилируется и выполняется на группе тестов. За каждый тест участник олимпиады получает некоторый балл, которые потом складываются. После олимпиады результаты становятся видны всем. Чем больше суммарный балл — тем выше место.
Стоит отметить, что обычно проверяющими системами плохо обрабатывается управляемый код (Java, C#). Мой друг лично на региональном этапе получил на трех из четырех задач 0 баллов из-за ошибки во время выполнения (писал на C#), хотя проверялось все нормально. Что делать в таком случае не понял ни я, ни он; на апелляции жюри просто пожали плечами.

Риски

Wrong answer
Неверный ответ. Результат работы программы не совпадает с ответом жюри
Неверный формат вывода или алгоритмическая ошибка в программе

Time limit exceeded
Превышен указанный в задаче лимит времени. Программа выполняется дольше установленного времени
Неэффективное решение или алгоритмическая ошибка в программе

Presentation Error
Отсутствие выходного файла OUTPUT.TXT
Файл не создан, неверное имя файла или сбой программы до открытия выходного файла

Compilation error
Ошибка компиляции. В результате компиляции не создан исполняемый файл
Синтаксическая ошибка в программе или неверно указано расширение файла. Возможно, что при реализации на языке Java был использован класс, отличный от Main

Memory limit exceeded
Превышен указанный в задаче лимит памяти. Программа использует больше установленного размера памяти.
Неэффективный алгоритм, либо нерациональное использование памяти

Runtime error
Ошибка исполнения. Программа завершила работу с ненулевым кодом возврата. В этом случае результат работы не проверяется
Возможно, в программе произошло обращение к несуществующему элементу массива, деление на ноль и т.д. Возможно, программа на C++ не завершается оператором «return 0» или по иной причине вернула ненулевой код возврата

Олимпиады

Как проходит всероссийская олимпиада по информатике?
Я прошел всего 5 этапов: 8-9 классы в школе, 8-11 классы в школе, муниципальный этап, дистанционный тур региональной олимпиады, региональная олимпиада. Далее идет всероссийский тур, но я на него, к сожалению, не попал. Сейчас я расскажу про те задачи, которые мне очень понравились.

Этап среди старшеклассников

Во время тура среди 8-11 классов была задача «Полиномиальные хэш функции» условие которой было записано на двух страницах формата A5. В этом условии была приведена краткая информация о хэш функциях, их истории, была предложена одна такая функция. Задача заключалась в её вычислении для массива входных данных. Нас испугало очень страшное название, сложная терминология, запись суммы её значком (тот который выглядит как буква E) и в результате её мало кто вообще начал решать. Условие сейчас найти, к сожалению, не смогу.

Муниципальный этап

Решить задачу, если объект один достаточно просто. Но когда объектов больше — приходится применять достаточно сложный раздел программирования, «Динамическое программирование». Учитель, который вел у нас факультатив признался в том, что он плохо представляет как решить эту задачу (совместными усилиями мы вывели значение, которое нужно минимализировать, просто построив несколько графиков, даже не спрашивайте что это за значение — я его благополучно забыл).
В результате задачу на полный балл решил лишь один участник олимпиады.

В. Великий архиватор
Ввод/вывод: стандартный
Ограничения по времени: 1 секунда

На планете роботов очень любят автоматическую обработку текстов. Для этого роботы ввели специальную должность Великого Архиватора. В обязанности Великого Архиватора входит составление списка всех слов текста и замена слов на число, обозначающее номер этого слова в списке.
Напишите программу, выполняющую функции Великого Архиватора.
Формат входных данных:
В единственной строке входных данных приводится строка длиной не более миллиона символов, состоящая из строчных и заглавных букв английского алфавита и пробелов. Любые два соседних слова в тексте разделены ровно одним пробелом. Слова считаются одинаковыми, если они равны с точки зрения сравнения строк, причем строчные и заглавные буквы считаются различными.
Формат выходных данных:
В единственной строке выходных данных необходимо вывести последовательность номеров слов текста, причем слова в списке должны быть упорядочены в порядке их появления в тексте. Нумерация слов должна начинаться с единицы.
Примеры входных и выходных данных:
Входные данные
To be or not to be
Why do you cry Willie Why do you cry Why Willie Why Willie Why Willie Why
Выходные данные
1 2 3 4 5 2
1 2 3 4 5 1 2 3 4 1 5 1 5 1 5 1

Пояснение к примерам входных и выходных данных: текст во втором примере не содержит символов перевода строки и возврата каретки.

Достаточно простой алгоритм сжатия (не помню как называется). Мне было интересно реализовать. Я решил эту задачу созданием массива из слов, добавлял туда первое слово. Затем считывал каждое следующее слово, проверял, нет ли его в массиве. Если оно было — записывал в выходной поток номер слова, иначе — добавлял в массив, записывал номер.
В принципе, мое решение не получило полный балл.
Полный текст заданий можно найти здесь.
На дистанционном туре я занял 1 место среди девятиклассников.

Региональный этап

На этапе региональном было не так весело, тура было два. Я боялся подвести школу и не пройти на следующий этап, плохо показать нашу школу. Поэтому и задания воспринимались не так весело и приятно. В общем: ничего не запомнил оттуда, но получил заветный диплом. Да и условия мне не удалось найти.
На второй день к нам приехали представители местной компании «Прогноз», поиграли с нами в «Что? Где? Когда?», провели викторину. Победителям раздали призы.

Подготовка

Как же я готовился?
Ответ достаточно прост: у меня хорошие учителя. Мне это было интересно и я получал от всего происходящего удовольствие. Я усердно готовился и добился того, чего хотел.

Что делать, если Вам это тоже интересно и Вы хотите принять во всем этом участие?

  1. Существуют системы подготовки школьников к олимпиадам по программированию, на них есть тестовая система и куча условий с решениями. Насколько я понимаю, на всех таких системах нужна регистрация. Я готовился при помощи двух:
    • acmp.ru Есть достаточно много задач разной сложности, так же интересен раздел «Курс олимпиадника»
    • http://acm.timus.ru/ Куча задач с самых разных олимпиад, некоторые на английском. В разделе http://acm.timus.ru/offline у нас проводился дистанционный и региональный этапы.
  2. Существуют онлайн олимпиады, я участвовал лишь в одной: NetOI от украинцев. Отзыв такой: ХАРДКОР. Дальше второго тура не прошел. Код нужно писать ужасно оптимально (я так не умею), для каждого теста индивидуальные условия (удвоенное время программы жюри).

Что же дальше?

Говоря это, я подразумеваю вопрос о том, насколько олимпиадники приспособлены к работе в реальных условиях.
Хоть я и не работал еще в IT индустрии, но я считаю: олимпиадники никак не приспособлены к реальной работе. На таких олимпиадах требуется уметь быстро изобрести «велосипед», знать хорошо алгоритмы. Я с другом занимаюсь написанием небольших игр и понимаю, что гораздо важнее уметь выбрать правильную технологию для твоих целей, уметь найти готовое решение чтобы ускорить разработку, «Велосипеды не нужны». Поправьте меня, если это не так.
Если кого интересует то, чего я в жизни хочу: на самом деле я не очень-то люблю IT и информатику, мечта моя — выучиться на физика-теоретика и заниматься исследованиями. А так как в РФ с этим проблемы я планирую уехать в Канаду или США.

Приму любые пожелания в ЛС или в комментариях. Надеюсь, данная статья не получилась длинной. Надеюсь она была для Вас интересна. Надеюсь Вас не раздражала моя неграмотность, уж очень я плохо знаю пунктуацию.

Как подготовиться к олимпиаде по информатике в любом классе

В статье мы собрали план с рекомендациями для подготовки к разным олимпиадам по информатике в 2021 году. Расскажем, как лучше готовиться — самому или на онлайн-курсах, и что делать, если до олимпиады осталось мало времени.

Варианты подготовки к олимпиадам по информатике

Расскажем о трех способах, как можно подготовиться к олимпиадам по программированию.

Самостоятельно:

Вариант, для которого не нужны расходы, но требуется самодисциплина и много времени. Все учебные материалы можно найти в интернете: электронные учебники и задачники, онлайн-тренажеры, видеоуроки для новичков на Youtube и пр.

Для победы в олимпиаде недостаточно школьных уроков по информатике – нужно много тренироваться, хорошо знать один из языков (Python, C++ и др.) и разбираться в задачах на динамическое программирование.

С репетитором:

Удобнее всего заниматься онлайн. Вы сэкономите не только время, но и деньги, так как дистанционные уроки стоят в 2 раза дешевле личных встреч. Через видеосвязь учитель расскажет новую тему, покажет примеры на интерактивной доске, проверит знание пройденного материала и ответит на вопросы.

Выбрать подходящий сервис для занятий с репетитором можно на нашем сайте. В детском разделе есть описание программ с ценами.

На онлайн-курсах:

Самый удобный вариант подготовки, который можно совмещать с учебой в школе, спортивными секциями и кружками. Занятия проводят в режиме реального времени и записывают. Если вы пропустите онлайн-урок, то посмотрите его запись. На занятиях подробно разбирают задачи из всероссийской и вузовских олимпиад, показывают типичные ошибки в коде, учат тестировать решение и отвечают на вопросы.

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

Для вашего удобства мы подготовили прямые ссылки на онлайн курсы подготовки к олимпиадам:

Как быстро подготовиться к олимпиаде по программированию

План подготовки зависит от того, в какой конкретно олимпиаде вы участвуете. Задания школьного или городского турнира по информатике проще, чем задачи финала Всероса. К отборочным турам готовиться легче и быстрее, так как уровень сложности повышается с каждым этапом.

Если вы знаете один из языков программирования, то к муниципальным состязаниям сможете подготовиться самостоятельно. Но чтобы попасть на финальное соревнование ВсОШ, потребуется помощь наставника.

Еще один фактор, который влияет на подготовку к олимпиаде по программированию – это цель. Ваши усилия зависят от того, какого результата добиваетесь – хотите принять участие ради интереса или занять призовое место. Победа во всероссийской или перечневой олимпиаде – это возможность получить льготы по учебе:

  • 100 баллов за ЕГЭ или ДВИ по информатике;
  • зачисление на профильные специальности в престижные российские ВУЗы – на бюджетные места и без испытаний.
  • «5» по информатике в четвертях и за учебный год.

Если вы планируете участвовать в олимпиаде, но времени на подготовку остается мало – купите видеокурсы. В онлайн-школах есть подготовительные программы, которые состоят из занятий в записи. Если у вас есть возможность заниматься интенсивно, то вы сможете смотреть по 3-4 урока в неделю и изучите всю программу за короткий срок. На занятиях дают тот же материал, который проходят при онлайн-обучении.

Ниже расскажем подробнее о самых известных олимпиадах по программированию для школьников и дадим советы по подготовке.

Всерос

Самая известная и престижная всероссийская олимпиада среди школьников 7-11 классов. Победа в финале ВсОШ – это гарантированное поступление на бюджет в любой ВУЗ страны по профильному направлению, а также денежное вознаграждение. Конкурс проводится в 4 этапа, и с каждым туром уровень задач усложняется: школьный, муниципальный, региональный и заключительный.

3 совета, как подготовиться к Всероссийской олимпиаде школьников:

  • Начинайте заниматься заранее и готовьтесь к каждому этапу постепенно. Во всех турах дают задания, которые превосходят по сложности и школьную программу, и вопросы из ЕГЭ. Распределите нагрузку и последовательно разбирайте задачи от простых к сложным.
  • Выберите язык программирования. В школе часто изучают Pascal или Кумир, но они не подходят для решения олимпиадных заданий. Для участия в олимпиаде нужно выбрать C++ или Python. Последний хоть и является более понятным, доступным для изучения, но пригодится только для написания простых скриптов.
  • Участвуйте в разных соревнованиях. Есть специальные интернет-площадки, на которых соревнуются программисты из разных стран, хакатоны для начинающих разработчиков, турниры по спортивному программированию и пр. Вы потренируетесь в решении нестандартных задач и научитесь справляться с заданиями на скорость.

Высшая проба

Организатором олимпиады является Высшая школа экономики. Она проводится ежегодно для двух возрастных категорий – 9-10 классы и 11 класс. Соревнование состоит из 2 этапов: отборочный тур проходит дистанционно, заключительный – очно, на утвержденных региональных площадках.

Как подготовиться к «Высшей пробе»:

  • Для участия в олимпиаде требуется наличие твердой математической базы. Поэтому подтяните свои знания по алгебре, геометрии, тригонометрии: арифметические операции с вещественными циклами, простые числа и разложение на делители, остатки, быстрое возведение в степень, взаимное расположение фигур на плоскости и в пространстве.
  • На сайте олимпиады есть полезные материалы, которые помогут при подготовке: методичка с рекомендациями, перечень тем, демоверсии заданий прошлых лет с правильными ответами, критерии оценки и пр. Внимательно изучите эти документы, особенно примеры задач с комментариями.
  • Расширяйте кругозор. У участников олимпиад не только хорошие академические знания, но и развитая эрудиция. Общайтесь с единомышленниками, подписывайтесь на блоги зарубежных программистов, следите за новостями в IT и смотрите тематические видео на Youtube.

Московская олимпиада школьников

Открытую олимпиаду по информатике для учеников 6-11 классов из всех регионов России организует Департамент образования г. Москвы. Она проводится в двух возрастных категориях (6-9 и 10-11 классы) и в 2 этапа: отборочный и заключительный (онлайн и очно). Победители и призеры финального тура получают льготы при поступлении в ВУЗы на профильные специальности.

Как подготовиться к МОШ:

  • Если вы нацелены на победу – составьте график подготовки. По уровню сложности вопросы Московской олимпиады похожи на ВсОШ. Поэтому заниматься нужно регулярно и по расписанию, чтобы времени хватило и на учебу, и на отдых. Сделайте чек-лист и напишите, какие темы и в какой последовательности будете изучать, в какой форме проверять свои знания.
  • Архив с заданиями прошлых лет есть в открытом доступе. Начинайте тренироваться на задачах первого тура – попробуйте справиться с каждым вопросом самостоятельно, а уже затем сравните свое решение с правильным вариантом.
  • Изучите систему начисления баллов. Бывают задачи повышенного уровня сложности, на которых можно получить баллы даже за частичное решение. В зависимости от этого продумайте тактику, поскольку время на олимпиаде будет ограничено.

Ломоносов

Организатором олимпиады является факультет вычислительной математики и кибернетики университета им. Ломоносова. Задания составляют таким образом, чтобы проверить не только базовые знания информатики, но и умение мыслить нестандартно, выходить за рамки шаблонных решений.

Наши советы по подготовке:

  • Учитесь решать текстовые задачи. Для этого нужно внимательно читать формулировку, анализировать вопрос, понимать, что от вас требуется.
  • Пользуйтесь прикладными программами. На олимпиаде бывают задания на поиск ошибки в исходном коде, обработку данных, которые трудно выполнить вручную. Поэтому нужно уметь писать собственные приложения или работать с инструментами автоматизации, например, электронными таблицами, текстовыми редакторами и т. д.
  • На сайте олимпиады есть методическое пособие с подробным описанием: общие сведения, рекомендации по подготовке, примеры задач с комментариями, а главное – список рекомендуемой литературы. Изучите методичку и пользуйтесь теми книгами и интернет-ресурсами, которые рекомендуют организаторы.

Где помогут разобрать олимпиадные задания с 5 по 11 класс

Удобнее всего готовиться к олимпиадам на онлайн-курсах:

  • Заниматься можно в домашних условиях в свободное время.
  • После каждой темы есть задание: упражнение, проверочный тест и т. д.
  • Вопросы можно задавать преподавателю по ходу урока или писать куратору в чат.
  • В личном кабинете хранятся все видеоуроки, а также конспекты лекций. В любой момент вы сможете пересмотреть занятие или повторить теорию.

Подготовиться к олимпиаде по информатике можно в онлайн-школе Фоксфорд. Вы можете купить полноценную программу, на которой готовят к ВсОШ и вузовским олимпиадам учеников 9-11 классов. Онлайн-курс состоит из 20 уроков в записи, на подготовку уйдет максимум 4-5 месяцев. Первый урок бесплатный.

А также в дистанционной школе есть специальный подготовительный интенсив по МОШ для 10-11 классов. На 6-часовом видеоуроке подробно разбирают задачи Московской олимпиады школьников.

Все курсы можно найти на нашем сайте — мы собрали условия и цены в разных онлайн-школах, а также у нас можно почитать отзывы учеников.

Как выиграть золотую медаль на международной олимпиаде по информатике. Кейс выпускника Тинькофф

В сентябре один из учеников образовательной программы для школьников Тинькофф Поколения выиграл золотую медаль на международной олимпиаде по информатике IOI 2020. В соревновании участвовало почти 350 ребят из 87 стран. Семен Савкин из Москвы занял 25 место в мировом рейтинге.

Командное выступление участников из России принесло стране 2 место в мировом зачете. России опередила сборные Японии, Канады и Кореи. Семен рассказал, как ему это удалось.

В олимпиаде участвовали 343 человека из 87 стран, золотые медали выдали 29 участникам, я был среди них.

Моя бабушка — учитель информатики. Поэтому я начал заниматься программированием еще в начальной школе. В 4 классе бабушка научила меня создавать небольшие компьютерные игры на Delphi, показала архив acmp.ru.

В 7 классе я впервые участвовал во Всероссийской олимпиаде по информатике, но не очень успешно. В 8 классе я стал призером, в 9 классе занял 13 место, а в 10 классе — 7 место. Кроме того, я активно учился в летних школах, участвовал в воркшопах по программированию, а в 10-м классе пошёл в Тинькофф Поколение, где мы тоже много решали олимпиадные задачи. Международная олимпиада по информатике — это пик спортивного программирования для школьников, и в этом году мне удалось пройти отбор и попасть на IOI в составе сборной России.

Каждый раз олимпиада проходит в разных странах. В этом году она должна была пройти в Сингапуре, но коронавирус нарушил планы: олимпиада проводилась в онлайн-формате — открытие, закрытие и награждение транслировалось в YouTube. Сборная России писала туры в кампусе МФТИ.

По сложности IOI близка ко Всероссийской олимпиаде. По организации все было по-другому. На Всеросе сотни ребят сидят в одном огромном зале и решают задачи, а на IOI от России было только четыре человека. В нашу команду прошли я и еще трое ребят из Санкт-Петербурга, Москвы и Казани. Мы все друг друга знали по предыдущим олимпиадам и сборам.

Олимпиада состояла из двух туров, которые в общей сложности могут длиться 10 часов. В каждом туре тебе даётся по пять часов, за которые нужно решить три задачи. Чтобы решить задачу по спортивному программированию, нужно написать достаточно эффективную программу, выдающую правильный ответ на всех допустимых входных данных. Код автоматически проверяется тестирующей системой. Если решение проходит все тесты — ты получаешь 100 баллов за задачу. Если программа написана неоптимально или выводит неверный результат на каких-то тестах — баллы снижают.

Я пишу на С++. В первом туре я решил одну задачу за час на 100 баллов, остальные две были сложнее. Во втором туре были две простые задачи и одна сложная. Я решил две задачи за 2,5 часа, но последнюю мне так и не удалось решить.

Во время тура участникам нельзя общаться. Если во время контеста есть вопрос по условиям, то можно задать его в тестирующей системе и жюри олимпиады ответит. После окончания тура мы обсудили задачи и я понял, как можно было улучшить мое решение. Решение этой задачи на 100 баллов было нестандартным, до него можно было только догадаться. Я решил ее частично.

В итоге, я стал золотым медалистом олимпиады.

После олимпиады выкладываются условия, тесты и авторские решения на разных языках программирования, кому любопытно, можно посмотреть тут

Я учился в школе № 57 в математическом классе, ездил на сборы по информатике, участвовал в Летней компьютерной школе, Moscow Workshops Juniors, много решал контесты на Codeforces, Atcoder, Topcoder, Codechef.

В 10 и 11 классах я учился в Тинькофф Поколении в кружке «Алгоритмы и структуры данных». Мне повезло: от дома до офиса на Водном стадионе недалеко. Мы занимались раз в неделю: по субботам были большие теоретические лекции, а на неделю нам давали решать тематические и олимпиадные контесты. Каждый тематический контест состоял из нескольких задач на тему прошедшей лекции.

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

Думаю, мне сильно помогла разносторонняя подготовка.

Пример задачи с первого дня IOI 2020

Есть билеты n цветов, на каждом билете написано некоторое число. Количество билетов каждого из n цветов равно m.

Два игрока играют в игру. Первый игрок в свой ход выбирает n билетов, по одному каждого цвета. После чего второй игрок смотрит на числа, которые написаны на билетах (обозначим их a_1, a_2, . a_n), и выбирает некоторое число b. После чего первый игрок получает |a_1 — b| + |a_2 — b| + . + |a_n — b| очков. Выбранные билеты удаляются.

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

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

Методика подготовки к олимпиадам по информатике

Вопрос 1. Как научиться решать олимпиадные задачи по информатике?

Чтобы научиться решать олимпиадные задачи по информатике, надо решать задачи по информатике. Естественно при этом заглядывая в соответствующею литературу.

Вопрос 2. Сколько необходимо решить задач, чтобы достойно выступать на олимпиадах по информатике?

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

Итак, поскольку многие задачи весьма и весьма схожи, то необходимо научиться решать задачи из всего диапазона: сортировка, динамическое программирование, длинная арифметики и т.д.

Вопрос 3. Можно ли подготовить школьников к олимпиадам по информатике в рамках школьной программы?

Думаю, что это нереально. Всем давно известно, что школьный курс информатики — это одно, а олимпиады по информатике — это совсем другое. Да, в примерной программе по информатике, в 9 классе, довольно большое количество часов уделено изучению программирования. В учебнике Семакина для 9 класса обучение программированию основано на языке Паскаль, у Угриновича примеры дана применительно к Visual Basic . Но, даже если применить дифференцированный подход к обучению школьников, вряд ли этих часов хватит для подготовки к олимпиадам отдельных школьников с «нуля».

Вопрос 4. Если часов по программе не достаточно для подготовки школьникам к олимпиадами, то как тогда готовиться?

Вижу три варианта:

По первым двум вариантам все понятно, но должно быть понимание со стороны руководства школы. Частенько, между учителями бывает «битва за часы», на кружок или факультатив по программированию часов может и не перепасть.

Личный энтузиазм доведенный до крайней меры — это весьма пагубное, на мой взгляд, явление. Российское образование не должно держаться на энтузиазме. Иначе получается, что пока есть энтузиазм — дело идет, закончился запал и все рухнуло. На энтузиазме долго не протянешь, но его иногда стоит проявлять в надежде, что дело сдвинется с «мертвой точки».

Вопрос 5. У меня 25 (26, 30. ) часов основной нагрузки, реально ли еще заниматься с учащихся на кружке по программированию?

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

Вопрос 6. Могут ли школьники готовиться к олимпиадам во внеурочное время и если могут, то как лучше организовать подготовку?

Могут, но у них как минимум должен быть домашний компьютер. В идеале должен быть еще и Интернет. При наличии ПК и Интернета можно решать задачи на одном из специализированных сайтов с автоматизированной проверкой решений, например на сайте Школа программиста.

Вопрос 7. Что требуется от учителя для качественной подготовки школьников к олимпиаде?

  • Умение учиться. Ведь как случается, закончил человек учебное учреждение и на этом его развитие в плане получения информации порой и заканчивается. Для работы в школе вроде хватит, так зачем еще заморачитваться.
  • Всегда быть на связи. У вашего ученика может возникнуть вопрос в любое время, есть ведь и такие, которые решают задачки по ночам. Если вам не спится, то почему бы, при возможности, ему не ответить при помощи той же «Аськи» или программы Skype .

При копировании материалов обратная ссылка обязательна

Как готовиться к олимпиадам по информатике

Anton Morgunov

Нас неоднократно спрашивали — а почему нет сообщества по информатике? А планируется ли открывать такое? Честно говоря, мы были бы не против. Но кого не спросим — все твердят, что смысла в таком сообществе нет, ибо есть куча крутых платформ. Сегодня мы попробуем сделать полноценный гайд по всем ресурсам, необходимимым для подготовки к олимпиадам по информатике.

Во-первых, если вы мало-мальски умеете программировать, вам обязательно нужно идти на CodeForces если вы еще там не сидите. Это, в принципе, все что нужно.

А что же если вы только только начинаете? Вот подборка комментариев от опытных олимпиадников по информатике:

0) В школе на уроках информатики изучают: устройство компьютера, ПО, компьютерные сети, программирование, представление и измерение информации. Учатся работать с операционной системой и приложениями (Paint, Word, PowerPoint, Excel, Access и тп.). Но на олимпиадах по информатике дают задачи только на программирование.

1) В первую очередь надо выбрать язык программирования. В настоящее время на соревнованиях по программированию популярнее всего языки C++, Python и Java. Если вы только начинаете программировать, то знающие люди рекомендуют начать с Python 3, а после того как вы изучите основы и решите десятки задач, следует переходить на С++. Если у вас уже есть опыт на любом другом языке, то рекомендуется выбрать С++.

2) Прежде, чем приступить к изучению языка, вам следует установить специальные программы, с помощью которых вы сможете программировать. Для новичков которые выбрали Python → инструкция (скачается PDF файл). А если вы выбрали С++, то разберетесь сами → дистрибутивы.

3) В сети Интернет существует множество ресурсов, позволяющих изучать основы программирования самостоятельно. Перечислю несколько интернет ресурсов для подготовки к олимпиадам:

● informatics.mccme.ru — содержит большое количество задач по программированию различного уровня. Во многих разделах есть ссылки на теоретический материал (Python, C++) по соответствующей теме; к большинству задач приложен подробный разбор. Для всех заданий доступна автоматизированная проверка решений.

● pythontutor.ru — онлайн-учебник по основам программирования на языке Python.

● Введение в программирование на C++ — бесплатный курс от академии Яндекса на stepik.org является одним из наиболее удачных онлайн-курсов.

Напишу несколько советов к прохождению этого курса. К каждой теме дается видеоурок, конспект и около 11 задач. В каждом шаге присутствуют комментарии. При решении задачи не следует сразу читать комментарии, потому что там часто пишут подсказки. Читайте комментарии если вы застрянете при решении задачи на минут 40-50. После решения задачи вы получите доступ к решениям других людей. Будет полезно постараться понять альтернативные решения. Если в одной теме вы решили 2/3 задач, то переходите к следующей теме, чтобы побыстрее приступить к изучению новой теории. Но при этом возвращайтесь регулярно к нерешенным задачам предыдущих тем.

● algoprog.ru — платный полноценный курс для подготовки к олимпиадному программированию, который проводит старший разработчик Яндекса. Бесплатный доступ к плану подготовки, теоретическому материалу и отличному подбору заданий.

Весь материал в курсе распределен по уровням, от самого простого до очень сложного. Уровни нумеруются последовательными числами (1, 2, 3, . ), в пределах уровня также введены подуровни, нумеруемые буквами (в уровне 1 — подуровни 1А, 1Б, 1В и 1Г, и т.п.). Если планируете заниматься бесплатно, то на этом сайте регистрироваться не надо. Достаточно пройти регистрацию на informatics.mccme.ru. На algoprog.ru в каждом подуровне дается теория и подбор задач. Под каждой задачей имеется ссылка, пройдите по этой ссылке и решайте данную задачу на informatics.mccme.ru.

● ProjectEuler — ресурс с более чем 700 задач разной сложности

● BestProg — хороший ресурс с объяснением теории и примерами кода на С++

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

● Решая задачи, нужно иметь в виду, что не так важно количество решенных задач, как их качество. Возникает соблазн выбирать красивые и легкие задачи, пропуская те, что кажутся трудными и требующими кропотливого труда. Но чтобы отточить свои навыки, нужно отдавать предпочтение именно задачам второго типа.

5) Напоследок, в качестве мотивации, опыт олимпиадного программирования сильно поможет вам устроиться на работу программистом. В качестве меры измерения возьмем систему уровней с algoprog.ru. Условно, вы можете пройти собеседование алгоритмической секции в крупную компанию на 5 уровне, с отдельными темами более высоких уровней (со слов разработчика из Яндекс). Будучи студентом, чтобы пройти на стажировку в Google, Facebook и тд. необходимо уметь решать задачи примерно уровня заключительного этапа Республиканской олимпиады школьников (со слов программиста из Google).

P.S. Оставлю здесь ссылку для тех кто не хочет заниматься олимпиадным программированием, а просто хочет стать программистом → Что надо учить?

Хочешь получать рассылку от нас?

Удивительный мир текстильных волокон

Как много у вас одежды? А как много на вас? Все люди разные, но скорее всего, на вас будет больше одной вещи. У большинства людей есть и естественная, и культурная нужда в защите наших хрупких физических оболочек от непредсказуемой окружающей среды: одежда может защитить нас не только от незваных взглядов,

[Beyond Robotics] НЗМ-нің емес оқушылары робототехника бойынша олимпиадаға қалай қатысу мүмкіндігіне ие болады ?

WRO олимпиадасына қатысу – бұл командалық рух, робототехника саласындағы білім мен жобаны әзірлеу және таныстыру дағдылары үшін сынақ емес. Бұл жалпы білім беретін мектеп оқушылары үшін олардың әмиянына сынақ. Орташа алғанда, WRO-ға қатысу мақсатында шетелге аттануы үшін бір адамға шамамен 2 мың доллар қажет және бұл кейде сапар құнынан асып кетуі

[Beyond Robotics] Робототехника бойынша сайыстарға қалай қол жеткізсе болады?

Робототехника бойынша олимпиадаларға қатысу көп күш пен шыдамдылықты, дағдылар мен табандылықты талап етеді. Осы олимпиадалардағы жүлделі орындар қатысушылардан одан да көпті талап етеді. WRO жолындағы әлеуметтік-экономикалық кедергілер туралы өткен мақалада біз робототехниктің Олимпқа шығуы қаншалықты ауыр екендігі туралы әңгімелестік. Бірақ барлық қиындықтарға қарамастан, тіпті әртүрлі білімі мен дағдылары бар жүздеген

Если не указано иначе, все текстовые материалы блога ОФ Beyond Curriculum лицензированы под CC BY-NC-SA 4.0

Ссылка на основную публикацию
Статьи c упоминанием слов:
Adblock
detector