Open In App

How to prepare for ACM – ICPC?

Last Updated : 25 May, 2023
Summarize
Comments
Improve
Suggest changes
Like Article
Like
Save
Share
Report
News Follow
 

ACM ICPC(Association for Computing Machinery – International Collegiate Programming Contest) is a worldwide annual multi-tiered programming contest being organized for over thirteen years. The contest is sponsored by IBM. 

This article focuses on what all topics that are important for competitive programming and should especially be studied in order to train yourself for the upcoming ACM-ICPC contest. 

Rules of the Contest – World Final Rules for 2021 Click here 

Indian Participants – Codechef conducts all the Indian Regionals. Click here to know about team formation, reimbursements, etc 

ICPC for Schools by CodeChef – This competition serves as a gateway for school students to participate in the ACM ICPC contest along with ICPC college participants held across India. It is an idea conceived by CodeChef and supported by Amrita University. 
 

To reach the world’s final, there are two phases. First, you have to qualify for the Preliminary online Round conducted on Codedrills (since last two years). Every college’s top team is selected if they have at least one question solved during the contest, with the number of teams selected based on the number of available seats in that particular region. These teams will then go on to compete in the prestigious International Collegiate Programming Contest (ICPC) regionals, where they will represent their college and compete against other teams from around the world. The regional contest is onsite in which the teams who qualified for the preliminary round, reach the site to compete in an onsite regional contest. The teams which further qualified for the onsite regionals round will reach the world’s final ACM ICPC. 

How to apply for ACM-ICPC: 

  1. Go to the ICPC website (https://icpc.global/).
  2. Create your personal contestant id, log in with the same, and fill in all the necessary information.
  3. As you have to create a team with a mentor/coach from your college your coach should do steps 1&2 but as a coach.
  4. Now the coach has to go to the dashboard -> create a team.
  5. Now you have to choose which region you want to opt for.
  6. Then register all the contestants with the proper mail id which the team members registered on ICPC BAYLOR. Remember only a Team Coach can create the team.

A sample ICPC Problem: A usual ICPC problem has the following features: 
 

  1. Problem statement: describing the problem and what output is to be generated.
  2. Input: Make sure that you read this section with complete attention as missing out on any minor detail may land you in the wrong answer zone.
  3. Output: Just like above, this one also should be read carefully.
  4. Constraints: These can include constraints on input, time, memory, code size, etc.
  5. Time limit: See if your algorithm can work in this range. If not, time to change it!
  6. Memory limit: If you are fond of allocating memory for every small thing, it’s a good time you change it.

Preparing for ACM-ICPC

First and foremost Step: PRACTICE – Following are the resources that can be referred to for practicing the ACM-ICPC alike contests and problems. For all these Online Judges, begin with the problems with maximum submissions and check other solutions to check how you may improve. Do Participate in their monthly contests to remain up to the mark. 
 

  • ACM-ICPC Past Problems – ICPC Archive, Practice at Codechef
  • TopCoder – Proceed by increasing problem levels gradually
  • Codeforces -List of Problem Sets
  • Codechef – Beginners can start with Codechef Beginners and proceed further
  • SPOJ – Move from easy to tough problems
  • USACO – Excellent training resource
  • uvaOnline Judge – Huge repository of problems
  • Hackerrank – Practice problems topic wise and participate in preparatory series
  • Hackerearth – Participate in preparatory series
  • Practice – Good for beginners. Has problems ranging from difficulty level School to Hard.
  • List of various Competitive Programming Contests available online all throughout the year
  • Usaco Guide – Provides detailed explanations of each topic, as well as numerous practice problems.
  • Atcoder – Contest A,B,C are beginner friendly and can help you in strengtheing your algorithms. 

       

 

What to study?

Knowing just the basics of programming won’t be fruitful for aspirants of ACM ICPC. One needs to have a thorough knowledge of advanced algorithms used as well. The following Topics list out the necessary Topics and Algorithms that one must surely know to improve and stand a chance in the actual competition. 

 

competitive-programming

Elementary data structures: To begin with competitive programming, one must master Data Structures. Following is the list of most commonly used data structures: 
 

Advanced Data Structures 
Priority queues, union-find sets, (augmented) interval trees, (augmented) balanced BSTs, and binary indexed trees 
 

More Advanced Data Structures. 

Sorting and Searching: Concentrate on learning the basic concepts and also get familiar with all the library functions available. 
 

String manipulation: Strings make programming problems interesting and difficult too and probably thats the reason they are used extensively in such contests. Learning library functions for String actually proves very helpful (C++: See this and this, String in Java). 
 

Choosing the right Language: C++ is to date most preferred language followed by Java when it comes to programming contests but you should always choose a language you are comfortable with. Being CONFIDENT in any language is most important. 

Standard Template Library: A quintessential especially for those using C++ as a language for coding 
 

Dynamic Programming 
 

All DP Algorithms 
 

BackTracking 
 

More articles on Backtracking 

Greedy Algorithms 
 

More articles on Greedy Algorithms 

Graph Algorithms: One of the most important topics which you can not ignore if preparing for ACM – ICPC. 
 

All Graph Algorithms 
 

Basic Mathematics

Arithmetic: Programmers must know how integers and real numbers are represented internally and should be able to code high-precision numbers. Bit manipulation tricks and knowing library functions for number basic arithmetic would be very helpful. 

Number theory: Knowing some of these concepts would save a lot of time and effort while programming in the contests. 
 

Combinatorics : Although directly might not seem to be important, Combinatorics is important to estimate asymptotic complexity of algorithms. 
 

Geometrical Algorithms 
 

Network Flow Algorithms 
 

All Articles on Geometric Algorithms 
 

More Advanced Stuff

Bit Algorithms, Randomized Algorithms, Branch and Bound, Mathematical Algorithms, Heavy Light Decomposition, A* Search 
 

Informative Articles that you may like to read

 

References: 
Programming Camp Syllabus 

 

 



Previous Article
Next Article

Similar Reads

How was my experience at ACM-ICPC Regionals?
ACM-ICPC (Association for Computing Machinery-International Collegiate Programming Contest) is a team-based, programming competition. Also known as the Olympics of programming. So, it all started from January, 2019. I was in my 1st year of BTech in my 2nd semester and I got to know about the prestigious competition ACM-ICPC. The seniors who were ju
4 min read
How to prepare for ICFP or International Conference on Functional Programming?
The ICFP Programming Competition is an international programming competition that has been held in June or July every year since 1998. The results were presented at the International Conference on Functional Programming. Every functional programmer dreams to be a part of the final rank list of ICFP. But the problem is how to prepare for ICFP? Well,
8 min read
Find maximum topics to prepare in order to pass the exam
Given three integer n, h and p where n is the number of topics, h is the time left (in hours) and p is the passing marks. Also given two arrays marks[] and time[] where marks[i] is the marks for the ith topic and time[i] is the time required to learn the ith topic. The task is to find the maximum marks that can be obtained by studying maximum numbe
15+ min read
How to Prepare for Google Code Jam?
Google Code Jam is an international programming competition hosted and controlled by Google. The competition began in 2003. From 2003 to 2007, Google Code Jam was used in the Topcoder area. Since 2008 Google has upgraded its competitive infrastructure and Google Code Jam became a fest for competitive programmers. Every competitive programmer dreams
10 min read
How to use ChatGPT to Prepare for Technical Interviews?
Preparing for technical interviews can be a challenging task, as it requires a combination of technical knowledge, problem-solving skills, and effective communication. However, with the help of Chat-GPT, a language model developed by Open-AI, you can prepare for technical interviews more efficiently and effectively.  In this article, we will explor
10 min read
How to prepare for Google Asia Pacific University (APAC) Test ?
Google Asia Pacific University Test, also referred to as Google APAC, is perhaps the best opportunity for a student enrolled in higher education institutes in the APAC region to mark a place in the big shot in the IT Sector - Google. Registration details Go to the Google APAC Website and click on participate.Once you login from your Google account,
4 min read
How to prepare for Facebook Hacker Cup?
Facebook hacker cup is an annual algorithmic programming contest organized by Facebook. Be it, students, professionals, or experts it attracts numerous programming enthusiasts from all around the globe. Top contenders are eligible for the interview call from Facebook for the Software Developer role. What is the process? Facebook Hacker cup is parti
5 min read
What is Competitive Programming/Coding and How to Prepare for It?
Programming... Competitive Programming... It teaches you how to think?. If you are a programmer, you might have understood the deep meaning of these lines quoted by Steve Jobs and you might have also experienced that even after shutting down your computer you keep on thinking about programming stuff or code you have written in your project. Once yo
10 min read
Array Data Structure Guide
In this article, we introduce array, implementation in different popular languages, its basic operations and commonly seen problems / interview questions. An array stores items (in case of C/C++ and Java Primitive Arrays) at contiguous locations or their references (in case of Python, JS, Java Non-Primitive( at contiguous locations. It offers mainl
4 min read
Linked List Data Structure
A linked list is a fundamental data structure in computer science. It mainly allows efficient insertion and deletion operations compared to arrays. Like arrays, it is also used to implement other data structures like stack, queue and deque. Here’s the comparison of Linked List vs Arrays Linked List: Data Structure: Non-contiguous Memory Allocation:
3 min read
Binary Search Tree
A Binary Search Tree (or BST) is a data structure used in computer science for organizing and storing data in a sorted manner. Each node in a Binary Search Tree has at most two children, a left child and a right child, with the left child containing values less than the parent node and the right child containing values greater than the parent node.
3 min read
Sorting Algorithms
A Sorting Algorithm is used to rearrange a given array or list of elements in an order. Sorting is provided in library implementation of most of the programming languages. Basics of Sorting Algorithms:Introduction to Sorting Applications of Sorting Sorting Algorithms:Comparison Based : Selection Sort, Bubble Sort, Insertion Sort, Merge Sort, Quick
3 min read
Data Structures Tutorial
Data structures are the fundamental building blocks of computer programming. They define how data is organized, stored, and manipulated within a program. Understanding data structures is very important for developing efficient and effective algorithms. In this tutorial, we will explore the most commonly used data structures, including arrays, linke
10 min read
Learn Data Structures and Algorithms | DSA Tutorial
Data Structures and Algorithms (DSA) refer to the study of methods for organizing and storing data and the design of procedures (algorithms) for solving problems, which operate on these data structures. DSA is one of the most important skills that every computer science student must have. It is often seen that people with good knowledge of these te
15+ min read
AVL Tree Data Structure
An AVL tree defined as a self-balancing Binary Search Tree (BST) where the difference between heights of left and right subtrees for any node cannot be more than one. The difference between the heights of the left subtree and the right subtree for any node is known as the balance factor of the node. The AVL tree is named after its inventors, Georgy
3 min read
Top 50 Array Coding Problems for Interviews
Here is the collection of the Top 50 list of frequently asked interview questions on arrays. Problems in this Article are divided into three Levels so that readers can practice according to the difficulty level step by step. Level 1Problems Practice Find the Minimum and Maximum Element in an Array Solve Array Reverse Solve Write a Program to Cyclic
3 min read
LCM of given array elements
In this article, we will learn how to find the LCM of given array elements. Given an array of n numbers, find the LCM of it. Example: Input : {1, 2, 8, 3}Output : 24Input : {2, 7, 3, 9, 4}Output : 252Method 1 : We know, [Tex]LCM(a, b)=\frac{a*b}{gcd(a, b)} [/Tex]The above relation only holds for two numbers, [Tex]LCM(a, b, c)\neq \frac{a*b*c}{gcd(a
14 min read
Bubble Sort Algorithm
Bubble Sort is the simplest sorting algorithm that works by repeatedly swapping the adjacent elements if they are in the wrong order. This algorithm is not suitable for large data sets as its average and worst-case time complexity are quite high. We sort the array using multiple passes. After the first pass, the maximum element goes to end (its cor
8 min read
Selection Sort
Selection Sort is a comparison-based sorting algorithm. It sorts an array by repeatedly selecting the smallest (or largest) element from the unsorted portion and swapping it with the first unsorted element. This process continues until the entire array is sorted. First we find the smallest element and swap it with the first element. This way we get
8 min read
Binary Search Algorithm - Iterative and Recursive Implementation
Binary Search Algorithm is a searching algorithm used in a sorted array by repeatedly dividing the search interval in half. The idea of binary search is to use the information that the array is sorted and reduce the time complexity to O(log N). Table of Content What is Binary Search Algorithm?Conditions to apply Binary Search Algorithm in a Data St
15+ min read
Quick Sort
QuickSort is a sorting algorithm based on the Divide and Conquer that picks an element as a pivot and partitions the given array around the picked pivot by placing the pivot in its correct position in the sorted array. Table of Content How does QuickSort Algorithm work? Working of Partition Algorithm with IllustrationIllustration of QuickSort Algor
13 min read
Heap Sort - Data Structures and Algorithms Tutorials
Heap sort is a comparison-based sorting technique based on Binary Heap Data Structure. It can be seen as an optimization over selection sort where we first find the max (or min) element and swap it with the last (or first). We repeat the same process for the remaining elements. In Heap Sort, we use Binary Heap so that we can quickly find and move t
15 min read
Merge Sort - Data Structure and Algorithms Tutorials
Merge sort is a sorting algorithm that follows the divide-and-conquer approach. It works by recursively dividing the input array into smaller subarrays and sorting those subarrays then merging them back together to obtain the sorted array. In simple terms, we can say that the process of merge sort is to divide the array into two halves, sort each h
15 min read
Insertion Sort Algorithm
Insertion sort is a simple sorting algorithm that works by iteratively inserting each element of an unsorted list into its correct position in a sorted portion of the list. It is like sorting playing cards in your hands. You split the cards into two groups: the sorted cards and the unsorted cards. Then, you pick a card from the unsorted group and p
10 min read
How to find Shortest Paths from Source to all Vertices using Dijkstra's Algorithm
Given a weighted graph and a source vertex in the graph, find the shortest paths from the source to all the other vertices in the given graph. Note: The given graph does not contain any negative edge. Examples: Input: src = 0, the graph is shown below. Output: 0 4 12 19 21 11 9 8 14 Explanation: The distance from 0 to 1 = 4. The minimum distance fr
15+ min read
Prim’s Algorithm for Minimum Spanning Tree (MST)
Introduction to Prim's algorithm:We have discussed Kruskal's algorithm for Minimum Spanning Tree. Like Kruskal's algorithm, Prim’s algorithm is also a Greedy algorithm. This algorithm always starts with a single node and moves through several adjacent nodes, in order to explore all of the connected edges along the way. The algorithm starts with an
15+ min read
Breadth First Search or BFS for a Graph
Breadth First Search (BFS) is a fundamental graph traversal algorithm. It begins with a node, then first traverses all its adjacent. Once all adjacent are visited, then their adjacent are traversed. This is different from DFS in a way that closest vertices are visited before others. We mainly traverse vertices level by level. A lot of popular graph
15+ min read
0/1 Knapsack Problem
Prerequisites: Introduction to Knapsack Problem, its Types and How to solve them Given N items where each item has some weight and profit associated with it and also given a bag with capacity W, [i.e., the bag can hold at most W weight in it]. The task is to put the items into the bag such that the sum of profits associated with them is the maximum
15+ min read
Depth First Search or DFS for a Graph
Depth First Traversal (or DFS) for a graph is similar to Depth First Traversal of a tree. Like trees, we traverse all adjacent vertices one by one. When we traverse an adjacent vertex, we completely finish the traversal of all vertices reachable through that adjacent vertex. After we finish traversing one adjacent vertex and its reachable vertices,
15+ min read
Tree Traversal Techniques
Tree Traversal techniques include various ways to visit all the nodes of the tree. Unlike linear data structures (Array, Linked List, Queues, Stacks, etc) which have only one logical way to traverse them, trees can be traversed in different ways. In this article, we will discuss about all the tree traversal techniques along with their uses. Table o
15+ min read
three90RightbarBannerImg