Самрат Чакраборти
Соревновательное программирование учит искусству разбивать проблему на мелкие части и находить для них работающие решения. Кроме того, для разработки необходимо изучить совершенно новый язык или фреймворк (JS, CSS, Django и т.д.).
Начать заниматься соревновательным программированием можно с базовых языков, изучаемых в школе, таких как C++, JAVA и Python.
Начало:
1) Изучите язык программирования:
Некоторые из наиболее используемых языков для соревновательного программирования следующие:
- C++
- Java
- Python
Хотя Python прост и легок в изучении, это относительно медленный язык. Фактически, он даже не допускается к участию в некоторых соревнованиях.
Некоторые предпочитают Java, но его коды пишутся дольше. Кроме того, в некоторых случаях вы можете получить TLE (Time Limit Exceeded) из-за медлительности.
C++ — самый быстрый среди Python и Java и сопоставим с C. Он предлагает вам очень мощную библиотеку (стандартную библиотеку шаблонов), которая упрощает многие вещи для конкурентоспособных программистов. (Например: предопределенные функции для сортировки, поиска, векторов, множеств, карт, пар и т.д.)
2) Начните практиковаться и участвовать в конкурсах:
Как новичок, начните решать раздел «Решение проблем» на Hacker rank. Охватите такие темы, как:
- Реализация
- Строки
- Сортировка
- Поиск
- Жадный
- Манипулирование битами
Выполняйте задания в порядке Easy-Medium-Hard.
Постарайтесь набрать 6 звезд, и вы почувствуете, что узнали много нового. Длина вашего кода уменьшится, и вы начнете писать более эффективный код.
Тем временем участвуйте в конкурсах на таких сайтах, как CodeChef и Codeforces, так как это отличный способ узнать новые концепции. Вначале язык задач может показаться вам немного сложным для понимания, но после нескольких конкурсов вы привыкнете к нему.
Также не забывайте решать задачи, которые вы не смогли решить в конкурсе.
3) Изучайте структуры данных и алгоритмы:
Практикуясь и участвуя в конкурсах, пачкайте руки в структурах данных и алгоритмах.
Это самая важная часть кодирования, где вы узнаете, как сделать вашу программу более эффективной. Хорошее знание структур данных поможет вам выбрать оптимальную структуру данных для решения задачи.
Некоторые правила и запреты, о которых вам следует помнить:
-
Практикуясь на любой платформе, не заглядывайте в решение/редакцию, не выкладываясь по полной. Подглядывание в решение не принесет вам никакой пользы. Всегда прилагайте все усилия, чтобы найти решение проблемы.
-
После окончания конкурса всегда пытайтесь решить проблемы, которые вы не смогли решить на конкурсе. Именно здесь начинается настоящее обучение. Посмотрите на редакционные статьи и обсуждения.
-
Не стесняйтесь посмотреть на решение других людей/друзей после конкурса. Возможно, подход вашего друга может быть лучше вашего.
-
Читайте блоги на Codeforces, написанные высококлассными кодерами. Вы наверняка сможете многому у них научиться.
-
Не зацикливайтесь на слишком легких задачах. Выйдите из своей зоны комфорта и бросьте себе вызов. Начните решать проблемы, которые вас подталкивают.
-
Не беспокойтесь о рейтинге на различных платформах для кодинга. Лучше сосредоточьтесь на своем росте. Ваш рейтинг будет автоматически расти, если вы сосредоточитесь на обучении.
-
Не демотивируйтесь и не расстраивайтесь, если вы не можете хорошо выступить в конкурсе или не можете решить проблему. Такое случается, просто учитесь на своих ошибках и старайтесь их не повторять.
-
Конкурсное кодирование — это в большей степени практика. Чтобы стать мастером в этом деле, требуется время. Поэтому никогда не сдавайтесь, если вам не нравится это делать, и никогда не сомневайтесь в себе.
Подведение итогов:
Из этого блога вы узнали, как можно начать свое путешествие по конкурентному кодингу и какие правила следует соблюдать.
Кроме того, если вы новичок в мире кодинга, вы можете присоединиться к сообществу Crazy Codigo, поскольку его еженедельные соревнования COW (Coder Of the Week) помогут вам получить много знаний и опыта и помогут вам начать свой путь.
Для любой дальнейшей помощи вы можете присоединиться к нашему Discord-серверу, и мы сможем расти вместе как сообщество!
Пока 🙂
~ Сэм