Этот блог предназначен только для начинающих программистов.

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

  1. Уже поздно начинать?

Когда я хотел начать CC (например, через 3 месяца 1-го семестра), я испугался, увидев своих друзей, которые уже начали его и хорошо справляются, но я не мог ответить даже на базовые вопросы и решил отказаться от идеи начать CC, но в то время я читал и присутствовал на выступлении Akashdeep Nain Sir, который начал CC в своем четвертом семестре и стал редкодером на codeforces и topcoder (если вы не знаете о редкодере, наберитесь терпения, вы узнаете этот термин, когда начнете) .

Https://www.youtube.com/watch?v=EeKfmWqG6B8 (Путешествие Акашдипа Наина, сэр)

Итак, в одной строке ответ на вопрос «Не поздно ли начинать заниматься соревновательным программированием?» is «Не слишком поздно, но да, это немного поздно. Итак, чего вы ждете?…. кодируйте это так, как вы…. xD ». Итак, начните как можно скорее.

Я думаю, что вы были каким-то образом мотивированы этим видом спорта, но все еще думаете: «С чего начать, что делать, как делать и т. Д.». Итак, теперь переходим к основной части этого блога ...

2. С чего начать?

«Практика, практика, практика …… ..». Но для практики и участия в соревнованиях по программированию вам нужно что-то выучить, например, язык, структуры данных, алгоритмы.

Пошаговый подход к тому, чтобы начать CC как новичок, должен быть следующим:

Шаг (i): выучите язык и одновременно отрабатывайте некоторые базовые вопросы программирования.

А теперь, какой язык учить? Ответ на этот вопрос отличается от человека к человеку, но, согласно статистике, в CC наиболее часто используемым языком является C ++, потому что C ++ имеет обширную библиотеку под названием STL (Standard Template Library), которая в некоторой степени облегчает жизнь конкурентоспособным программистам (все еще кодеры не слишком легкая жизнь. Наше счастье зависит от количества зеленых галочек (принятых программ), увиденных за день). Так что лучше начинать с C / C ++. Если вы уже начали с C, попробуйте перейти на C ++ и облегчить себе жизнь с помощью STL.

Вы также можете начать с любого другого языка, такого как java, python и т. Д.

Где учить язык?

Расслабьтесь сейчас, не запутайтесь из-за большого количества ресурсов, просто выберите любую серию видео или серию текстовых руководств. Самое главное - улучшить свое логическое мышление, для этого начните практиковаться в любом онлайн-судье сразу после того, как освоите базовый синтаксис языка и массивов, строк и т. Д. Вначале вы можете начать задавать базовые вопросы на hackerearth.com (hackerearth ). Когда вы ответите примерно на 100 вопросов и выучите язык, переходите к следующему шагу….

Шаг (ii): примите участие в соревнованиях по программированию для начинающих и продолжайте практиковаться

Пришло время измерить себя, так что продолжайте практиковаться. Теперь вы можете начать тренироваться с codeforces, используя лестницы https://a2oj.com/ (a2oj) в соответствии с вашим уровнем. И начните изучать некоторые концепции математического программирования, основные структуры данных и алгоритмы.

Список некоторых конкурсов начального уровня:

i. Конкурс для начинающих Atcoder:

На https://atcoder.jp/ (Atcoder) примерно каждую неделю проводились соревнования по программированию для начинающих, в которых почти начальные три вопроса из шести просто логичны и требуют знания основ программирования. Здесь вы можете повысить свою уверенность в себе.

ii. Codeforces div3:

Соревнование базового уровня на https://codeforces.com/ (Codeforces) - div3. Просто участвуйте и поднимайтесь (учитесь из редакционной статьи, а затем код), по крайней мере, до D (если вы не смогли сделать это во время конкурса).

iii. Ежемесячный длинный вызов Codechef:

Https://www.codechef.com/ (Codechef) раньше проводил длинный конкурс из 8 вопросов, которые нужно было решить за 10 дней. Это не соревнование абсолютного уровня для начинающих, но все же вы должны участвовать в нем, несмотря на то, что вы базовый программист, потому что за эти 10 дней вы узнаете здесь что-то новое.

Теперь,

3. Как продолжить?

Теперь, после изучения языка, некоторых базовых структур данных и алгоритмов, некоторой математики и отработки некоторых базовых вопросов, используемых для успешной работы в соревнованиях начального уровня, вы перешли черту начинающего конкурентоспособного программиста. Итак, самое важное в это время - это усерднее тренироваться по сравнению с предыдущими днями, выйти из своей зоны комфорта (для кодировщика «зона комфорта» - это «быть счастливым, задавая вопросы базового уровня»), постарайтесь запачкать руки. некоторые лучшие задачи. Начните участвовать в соревнованиях codeforces div2, обеденном перерыве codechef, готовке, atcoder's grand и т. д. Изучите новые алгоритмы и усовершенствованные структуры данных, динамическое программирование и т. д. и продолжайте дальше…
станьте лучшим Codderrr. Удачи. Удачного обучения :)
Удачного кодирования :)