Примечание автора (Дхрув Котари): - Здравствуйте, читатели! Эта статья основана на подходе к соревновательному программированию, ориентированном на новичков. Все мнения, высказанные в этой статье, отражают мои собственные взгляды, которые, на мой взгляд, подходят новичку в мире соревновательного программирования.

Соревновательный человек всегда побеждает. Неконкурентоспособный человек всегда проигрывает.

~ Д-р. Т. П. Чиа

Что такое соревновательное программирование?

На мой взгляд, соревновательное программирование - это спорт. Спорт, основанный на умении решать проблемы, мыслительных способностях, тестировании скорости, регулярности, а если быть точным. Конкурентное программирование поможет вам построить логику и реализовать ее для поиска решений реальной проблемы. Мозговой штурм вашего кода определенно улучшит ваши навыки программирования, а также поможет расширить ваши мыслительные способности. Таким образом, ежедневная практика соревновательного программирования поможет вам в овладении этим конкретным языком. И поверьте, если вы регулярно занимаетесь этим видом спорта, вы уже готовы к техническим этапам собеседований. Итак, теперь давайте окунемся в океан соревновательного программирования.

Как начать соревновательное программирование?

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

Просто начните. Возьмите ноутбук, ручку и книгу. Получите формулировку проблемы, начните думать о логике, создайте алгоритм и, наконец, реализуйте его.

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

Хакерранк

На мой взгляд, это одна из лучших платформ для начинающих. Его пользовательский интерфейс прост и удобен для пользователя. Существуют разные категории, такие как решение проблем и алгоритмы, математика, статистика, знание языков (C, C ++, JAVA, Python), SQL и многие другие. Вопросы варьируются от ЛЕГКО до СЛОЖНО до РАСШИРЕННЫЙ. Наконец, вы одарены звездочками, которые действительно мотивируют вас делать более.

Codechef

Проведя несколько дней на Hackerrank и получив несколько золотых значков, вы можете начать с CodeChef. Постановления о проблемах основаны на мышлении более высокого порядка, чем Hackerrank, но если вы нацелены на отличные соревнования, такие как ACM-ICPC, то это одна из лучших платформ для практики. Codechef организует конкурсы, такие как Monthly Long Challenges, Cook-off и Lunch-time, которые показывают ваш рейтинг / позицию как в национальном, так и в глобальном масштабе, чтобы вы могли узнать, где вы сейчас находитесь в мире.

Вот список еще нескольких платформ для практики (для среднего уровня и выше): -

  1. SPOJ (Судья Sphere Online)
  2. CodeForces
  3. TopCoder
  4. LeetCode
  5. Проект Эйлер
  6. GeeksForGeeks
  7. HackerEarth

Знания не имеют ценности, если вы не применяете их на практике.

Новичку следует помнить о самом важном!

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

Например, говоря о C ++,

если ограничения имеют вид (0 ≤ arr [i] ≤ 10¹⁰), для этого нельзя использовать обычный тип данных int. Здесь вам нужно использовать тип данных long long int.

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

3. Настойчивость всегда грандиознее, чем результативность. Сосредоточьтесь на практике, а не ожидайте результатов в первый же день. «Подождите! даже на чудеса уходит немного времени ». Так что будьте последовательны, старайтесь задавать хотя бы 5 вопросов каждый день и уделяйте каждому вопросу много времени. Не сдавайся легко. НАВИГАЙТЕ СВОИ ОГРАНИЧЕНИЯ и СОХРАНИТЕ ТЕРПЕНИЕ.

4. Анализируйте свой код на основе пространственной и временной сложности. Как конкурентный программист, очень важно знать временную и пространственную сложность ваш код. Потому что ваш код оценивается по этим параметрам, и, следовательно, вы можете улучшить свой код, уменьшив эти сложности.

5. Структуры данных и алгоритмы: приверженцы кодирования. Не зная DS-A, далеко не уедешь в этом путешествии. Сохраняйте привычку регулярно изучать новые алгоритмы и методы и старайтесь реализовывать эти алгоритмы, решая задачи. Это поможет вам создавать коды с уменьшенным комплексом кода по времени и пространству.

Советы и предложения: -

  1. Не зацикливайтесь на нескольких языках. Придерживайтесь одного языка, такого как C ++, JAVA или Python и т. д. На мой взгляд, я бы рекомендовал C ++ по сравнению с любым другим языком из-за его простой синтаксис и более высокая скорость.
  2. Отладьте свой код. Очень важно находить ошибки в собственном коде, чтобы их можно было избежать в следующий раз.
  3. Анализируйте чужой код. Обычно рекомендуется анализировать чужой код. Например: при выполнении задач на Hackerrank после решения задачи просто перейдите в раздел «Обсуждения» и прочитайте решения других людей, которые дадут вам лучшие и уникальные идеи для решения того же вопроса.
  4. Узнавайте новое. Прочтите о различных стилях и методах кодирования, таких как рекурсия, отслеживание с возвратом, динамическое программирование и многих других.
  5. И наконец, ПОЛЮБИТЕ СВОЙ КОД. Я не думаю, что есть необходимость объяснять это дальше xD. Верно!

Так чего же вы ждете… просто идите и пишите код !!!

Спасибо, что были со мной до сих пор. Вот вам бонусный балл!

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

Несколько статей, которые необходимо прочитать: -

Итак, в заключение я хотел бы сказать, что настойчивость ведет к чудесам. Отсюда практика, практика и практика и, наконец, что не менее важно, направляют и мотивируют других погрузиться в глубокий океан КОНКУРЕНТОСПОСОБНОГО ПРОГРАММИРОВАНИЯ!

БЛАГОДАРНОСТЬ!