Это продвинутая форма программирования, в которой мы склонны находить решение проблемы в ограниченном пространстве и времени с заданными ограничениями. Эти проблемы не являются реальными проблемами, но интуиция по отношению к ним очень помогает, когда мы решаем проблемы из реальной жизни.
Ниже приведены 4 шага, а также советы, которые помогут любому стать экспертом в соревновательном программировании.
1) Выбор языка программирования
Хороший конкурентоспособный программист является ветераном по крайней мере в одном язык. Так что делай то же самое, выбирай любой язык и изучай его, пока не достигнешь совершенства. Я перечислю наиболее важные из них.
C++/JAVA: оба являются объектно-ориентированными языками программирования, и они любимы большинством программистов. и решения публикуются на этих языках, поэтому будет разумным выбором выбрать любое из них.< br /> Python : Python — это язык общего назначения и очень продвинутый, поэтому написание кода становится простым и лаконичным. Это очень полезно, когда вводимые числа очень-очень длинные. Ввод-вывод в python медленнее, чем в C++/Java, поэтому для вопросов с большими входными данными это не предпочтительно.

2)Выбор правильной платформы
В наши дни вы найдете множество платформ для начала кодирования. И вы можете выбрать любую платформу, но важно, чтобы вы не переключались между платформами для вопросов. Придерживайтесь один и ответьте как минимум на 50–60 вопросов в одном и том же, это улучшит ваши навыки решения проблем, тогда вы можете выбрать другую платформу в зависимости от ваших требований.
Немногие очень популярные сайты соревновательного программирования
Ранг хакера : очень подробные тематические разделы. Это очень полезно, когда вам нужно улучшить определенный раздел кодирования.
Hacker Earth/Code chef/ Code Forces/Лучший кодер: Помимо вопросов, они содержат длинные и короткие задачи. Это помогает отслеживать наш рост.
На всех этих сайтах есть сильное и активное сообщество программистов, так что выбирайте любой только из перечисленных.

3)Алгоритмы обучения
К настоящему моменту мы поняли, с чего начать, но для того, чтобы решать проблемы, вам нужно разбираться в алгоритмах. В начале с очень простыми задачами вы не найдете нужно изучать алгоритмы, но по мере увеличения сложности вопроса понимание алгоритмов и структур данных становится необходимым условием для его решения.
Мы можем изучать алгоритмы и структуры данных двумя способами.
Во-первых, выберите любую проблему. и попробуйте. Хорошо, если вы можете взломать его, но если нет, то это означает, что ваше понимание ограничено, и с этим знанием вы не можете решить эту проблему. Затем найдите его редакционную статью и попытайтесь понять логику, стоящую за ней или вы можете воспользоваться помощью товарищей, которые могут помочь вам с этим вопросом.
Во-вторых, вместо того, чтобы решать проблему в первую очередь, сначала изучите структуру данных, а затем применяйте ее в аналогичных вопросах. Например, представьте себе вы изучили бинарный поиск, затем выберите конкретный q вопросы, в которых вы можете применить его. Таким образом, вы прочно усвоите эту концепцию.
Таким образом, оба способа полезны для знакомства со структурой данных и алгоритмами.

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

Помимо этих советов, для достижения лучших результатов необходимо помнить еще о нескольких моментах.
Шпаргалка!!!
1) Независимо от того, можете ли вы решить какую-либо проблему или нет, в конце всегда ищите редакционные статьи. Таким образом, вы увидите подход постановщика задач, и если он отличается от вашей логики, вы в конечном итоге изучите новый способ решения проблемы.
2) Не решайте большое количество похожих шаблонных вопросов. так как это пустая трата времени. Когда вы научитесь справляться с определенным шаблоном вопросов, повторная практика снова и снова не очень поможет. Поэтому, чтобы эффективно совершенствоваться, избегайте вопросов с шаблонами.
3) Если вы используют C++/Java, а затем узнают, как использовать в нем STL. Это значительно уменьшает размер кода, а также увеличивает время выполнения кода.