Рубрики

Как подготовиться к ACM — ICPC?

ACM ICPC (A ssociation для C omputing M achinery — ЕЖДУНАРОДНЫЙ C ollegiate P rogramming C ontest) является всемирно ежегодным многоуровневым соревнованием по программированию проводится уже более тринадцати лет. Конкурс спонсируется IBM.

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

Правила конкурса — Мировой финал Правила на 2017 год Нажмите здесь

Индийские участники — Codechef проводит все индийские регионалы. Нажмите здесь, чтобы узнать о формировании команды, компенсации и т. Д.

ICPC for Schools by CodeChef — Этот конкурс служит воротами для школьников, участвующих в конкурсе ACM ICPC вместе с участниками колледжей ICPC, проводимыми по всей Индии. Это идея, разработанная CodeChef и поддержанная Университетом Амрита.

Пример проблемы ICPC: Обычная проблема ICPC имеет следующие особенности:

  1. Постановка проблемы: описание проблемы и того, какие результаты должны быть получены.
  2. Входные данные: убедитесь, что вы прочитали этот раздел с полным вниманием, так как если вы пропустите какие-либо мелкие детали, вы попадете в зону неправильного ответа.
  3. Вывод: Как и выше, этот также следует внимательно прочитать.
  4. Ограничения: они могут включать ограничения на ввод, время, память, размер кода и т. Д.
  5. Ограничение времени: посмотрите, может ли ваш алгоритм работать в этом диапазоне. Если нет, пришло время изменить это!
  6. Ограничение памяти: если вам нравится выделять память для каждой мелочи, самое время изменить ее.

Подготовка к ACM-ICPC

Первый и главный шаг: ПРАКТИКА — Ниже приведены ресурсы, на которые можно ссылаться для участия в соревнованиях и проблемах ACM-ICPC. Для всех этих OJ, начните с проблем с максимальным количеством представлений и проверьте другие решения, чтобы проверить, как вы можете улучшить. Участвуйте в их ежемесячных конкурсах, чтобы оставаться на высоте.

  • Прошлые проблемы ACM-ICPC — Архив ICPC , Практика в Codechef
  • TopCoder — постепенно увеличивайте уровень проблем
  • Codeforces — список проблемных наборов
  • Codechef — Начинающие могут начать с Начинающих Codechef и продолжить
  • SPOJ — переходите от простых к сложным задачам
  • USACO — Отличный учебный ресурс
  • uvaOnline Judge — Огромное хранилище проблем
  • Hackerrank — Практикуй тему проблем мудро и участвуй в подготовительных сериях
  • Hackerearthучаствуйте в подготовительных сериях
  • Практика — хорошо для начинающих. Имеет проблемы в диапазоне от уровня сложности Школа до уровня сложности.
  • Список различных соревновательных соревнований по программированию, доступных онлайн в течение всего года

Чему учиться?

Знание только основ программирования не будет плодотворным для соискателей ACM ICPC. Нужно также иметь глубокие знания по продвинутым алгоритмам. Следующие темы перечисляют необходимые темы и алгоритмы, которые нужно обязательно знать, чтобы улучшить и получить шанс в реальной конкуренции.

Элементарные структуры данных: чтобы начать с конкурентного программирования, нужно освоить структуры данных. Ниже приведен список наиболее часто используемых структур данных:

Усовершенствованные структуры данных
Очереди приоритетов , наборы поиска объединения, (расширенные) интервальные деревья, (расширенные) сбалансированные BST и двоичные индексированные деревья

Более продвинутые структуры данных.

Сортировка и поиск: сконцентрируйтесь на изучении основных понятий, а также ознакомьтесь со всеми доступными функциями библиотеки.

Манипулирование строками. Струны делают задачи программирования интересными и сложными, и, вероятно, по этой причине они широко используются в таких конкурсах. Изучение функций библиотеки для String на самом деле оказывается очень полезным (C ++: см. Это и это , String в Java ).

Выбор правильного языка: C ++ до сих пор является наиболее предпочтительным языком, за которым следует Java, когда дело доходит до соревнований по программированию, но вы всегда должны выбирать язык, который вам удобен. Быть уверенным в любом языке является наиболее важным.

Стандартная библиотека шаблонов : квинтэссенция, особенно для тех, кто использует C ++ в качестве языка для кодирования

Динамическое программирование

Все алгоритмы DP

с возвратами

Другие статьи на Backtracking

Жадные алгоритмы

Другие статьи о жадных алгоритмах

Графовые алгоритмы: одна из самых важных тем, которую нельзя игнорировать при подготовке к ACM — ICPC.

Все графовые алгоритмы

Базовая математика

Арифметика . Программисты должны знать, как целые и действительные числа представляются внутри, и уметь кодировать высокоточные числа. Уловки манипулирования битами и знание библиотечных функций для базовой арифметики чисел были бы очень полезны.

Теория чисел. Знание некоторых из этих концепций сэкономило бы много времени и усилий при программировании на соревнованиях.

Комбинаторика: Хотя прямая связь может показаться неважной, комбинаторика важна для оценки асимптотической сложности алгоритмов.

Геометрические алгоритмы

Алгоритмы сетевого потока

Все статьи по геометрическим алгоритмам

Более продвинутый материал

Битовые алгоритмы , Рандомизированные алгоритмы , Ветвление и ограничение , Математические алгоритмы , Разложение с сильным слабым светом , A * Поиск

Информационные статьи, которые вы можете прочитать

Ссылки:
Программирование Camp Syllabus

Эта статья предоставлена Вишвешом Шримали в сотрудничестве с командой GeeksforGeeks . Если вам нравится GeeksforGeeks и вы хотите внести свой вклад, вы также можете написать статью и отправить ее по почте на contrib@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное, отсутствует или хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Как подготовиться к ACM — ICPC?

0.00 (0%) 0 votes