2017-02-06 20:50:00
За плечами первая олимпиада. Или она только впереди, но ты уверенно хочешь прийти и показать всем, что умеешь неплохо кодить. Давай рассмотрим несколько аспектов подготовки.
1. Язык программирования.
С одной стороны, язык вообще не принципиален. С другой стороны, так уж сложилось, что наиболее популярны три языка - C++, Python, Pascal. На мой взгляд, полезно знание первых двух. Паскаль же популярен как язык, которому чаще учат в школах. Статистика говорит, что «плюсы» и «питон» показывают себя на олимпиадах получше. Важно понимать, что нет «плохих языков», просто они для разных целей. А вообще есть неплохая статья на эту тему.
Почему Python? На нем можно быстренько писать короткие задачки, или использовать как язык для стресс-тестирования — это когда ты написал код на другом языке, который работает по задумке эффективно и правильно, но, чтобы убедиться в этом, ты пишешь на скорую руку код, которые работает вообще не эффективно, но точно правильно, и сверяешь результаты на одних и тех же входных данных. Почему не использовать его для всех задач? К сожалению, он достаточно медленный для «больших задач», но в целом можно и на нем. А еще он понятен. Код на нем - как короткое сочинение на английском. Поэтому он достаточно удобен для изучения. В качестве среды разработки наиболее популярен и удобен PyCharm, хотя встроенный питон есть и в любой системе и его можно вызвать через терминал/консоль.
Почему C++? Огромная мощь и функционал. А еще невероятно быстрая скорость работы (особенно в сравнении с «питоном») на больших данных. Огромное множество базовых вещей, которые часто нужны на олимпиадах и сильно упрощают жизнь (например, функция сортировки, динамические массивы и многое другое), но которых нет в том же Pascal. В качестве среды чаще всего можно встретить на олимпиадах Code::Blocks или Visual Studio. Еще приятны для работы CLion и Xcode.
2. Тренировки. Чтобы хорошо решать олимпиады, нужно практиковаться. А значит, нужно решать много задач, чтобы на олимпиадах одни и те же классические вещи писать быстро и без ошибок - как квадратное уравнение в математике. Если ты видишь его в первый раз, то можешь не решить. Если тебе показали формулу, и ты решил один раз - не факт, что эту формулу ты вспомнишь через неделю—две. А вот решив с десяток другой задач, для тебя это будет уже делом техники. Так же и с олимпиадной информатикой. Где лучше попрактиковаться?
—http://informatics.mccme.ru Обучающие курсы от лучших олимпиадных преподавателей Москвы (которые чаще всего и выступают составителями задач на олимпиадах). Огромное количество учебного материала.
—http://acmp.ru Удобное разделение по категориям, отмечена сложность заданий. Плюс хорошая тестирующая система. В личном профиле показываются еще и нерешенные задачи.
—http://codeforces.com/ Лучшее место для практики. Постоянно проводятся соревнования, есть разборы многих уже прошедших. Кроме того, получаемый там рейтинг может оказаться огромным плюсом в дальнейшей жизни: если он достаточно хорош, то, будучи указанным в резюме или при собеседовании, он станет явным плюсом для тебя.
—http://acm.timus.ru Куча задач с самых разных олимпиад, некоторые на английском. Иногда именно тут раньше проводились региональный и муниципальный этап ВОШ.
Надеюсь, тебя приятно порадовало узнать про рейтинг на Codeforces, ведь ты уже сейчас можешь начать работать на свою будущую карьеру. Ну и, конечно же, хорошо написанные олимпиады могут дать тебе поступление в любой престижный вуз: МГУ, ВШЭ, СПБГУ, МФТИ и не только. Дерзай!