Introduction To ACM-ICPC 2021
Machinery – International Collegiate Programming Contest or ACM-ICPC is one of the world’s oldest and the most esteemed programming competitions.
Every year, more than 2,000 universities spread across eighty countries participate in this contest to win the grand prize of $12,000 and a gold medal awarded by the ACM-ICPC. Apart from this, three runner-up teams receiving the Gold medal also receive a reward of $6,000, and groups that bag the Silver and Bronze medal receive $3,000 and $1,500, respectively.
The ACM-ICPC contest has two rounds, the regional round organized and conducted at the local universities of various regions across the world. In India, the Asia Regionals are held at Amritapuri, Chennai, and Kolkata. The regional contest location sites are allotted a ‘slot’ which is the formal invitation to enter the ACM-ICPC World Finals.
Need help with Google Kickstart 2021-a CodeJam Competition, we have created a checklist for you.
Here’s how you should approach the ACM-ICPC preparation!
Pandemic and Preparation for ACM-ICPC [Updated in 2021]
Due to the pandemic situation worldwide, there are specific changes in the schedule of ACM – ICPC. As per the latest updates, in May 2021, Amrita will host the 2020 Regional contest, which was postponed due to the pandemic. The Preliminary Round and Regional Round will both be held online on the CODEDRILLS platform.
The preliminary round will take place on 16th May and will last 2.5 hours. Registrations opened on 1st March and will close on 30th April on the Baylor System. There is no cost to register for the Preliminary Online Exam.
The Regional Round will take place on 30th May and will last for five hours. Following the Preliminary Online Round, qualifying teams will move to the next level.
If the situation permits, the Regional Contest will be held offline at the Bengaluru and Chennai or Coimbatore campuses.
Now practice the previous year’s problems in this section for free.
Details of ICPC Shanghai Training Camp powered by Huawei:
Phase 1: February 1st – 3rd, 2021 – A three-day online event that included training and practice competitions allowing Asia East Continent teams to compete against top competitors from the famous ICPC Petrozavodsk Training Camp. https://www.huawei.com/minisite/icpc/en
Phase 2: March 21st – April 4th, 2021 – A series of online practice opportunities where competitors will train independently or with their team.
You can access the training platform here: https://contest.yandex.com/icpc-university-trainings
Phase 3: May 21st – 23rd, 2021 – An invitation-only, in-person intensive onsite training camp experience at Huawei’s Shanghai Research laboratory.
Get a Head start on Summer with a programming checklist by Coding Ninjas 2021.
Other ACM-ICPC updates
- Out of a field of 971 contestants from 111 universities, four teams emerged as the first to solve some of the most challenging problems in ICPC North America.
- March is a pivotal month for ICPC Contenders around the world, as they compete in 15 ICPC Global Regionals across three continents for the chance to progress to higher levels and, eventually, ICPC2021.
- Sixty teams from 31 universities competed in the ICPC Mid-Central USA Regional Contest.
- 105 teams from 33 universities competed across five virtual sites in the ICPC Pacific Northwest Regional.
- In the ICPC Rocky Mountain Regional Contest, 33 teams from 12 universities were able to compete to advance to the ICPC North America Division Championships coming in April.
- 89 teams from 39 universities competed in the ICPC Mid-Atlantic Regional Contest.
The first and most crucial step is PRACTICE – The resources given below are vital to practising ACM-ICPC related contests and problems.
Due to the pandemic situation, preparation can be done online. Start with the most submissions and look at other’s solutions to see if you can progress. Participate in their monthly competitions to stay updated.
The Ultimate Guide to crack the interview of Product-based companies by CodeStuio.
List of resources for ACM-ICPC
- Past ACM-ICPC Problems – ICPC Archive, Practice Codechef.
- TopCoder – Steadily increases the difficulty of the problems.
- Codeforces – There is a list of Problem Sets.
- Codechef – Beginners should start with Codechef Beginners and work their way up.
- SPOJ – Progress from simple to complex problems.
- USACO – It is a fantastic training resource.
- uvaOnline Judge – An extensive database of problems.
- HackerRank – Practice problems by subject and take part in practice sessions.
- HackerEarth – Participate in a preparatory sequence.
- Practice – This is a good option for beginners. It has problems varying in complexity from easy to complex.
To check the best resources for competitive programming contests available online, you can read our blog post
Begin by tracking down problems with the most number of submissions, see how people have approached it, and see if you can get to the solution through a different and better perspective.
The next step would be to make a detailed list of the things you have to study. Having a computer science background is highly preferred as you will have to deal with a lot of complex data structures and algorithms in the contest
There are many programming languages to choose from, including C++, Java, Ruby, Python, Perl, and so on. Pick one programming language that you think will be the best match for you and master it through and through. Once you master a programming language, you’ll find it much easier to learn other programming languages.
Mastering data structures is one of the prerequisites for participating in any competitive programming contest. Thus, you are expected to be well-versed with the fundamental of data structures such as arrays, stacks, queues, strings, heap, and hash, to name a few. Once you’ve got a solid grasp on these basic data structures, it’s time to move on to more advanced data structures like Fenwick Tree, K-D Tree, Segment Tree, Interval Tree, and so on.
Sorting & Searching
After data structures, you should focus on learning sorting and searching functions like quicksort, merge sort, binary search, and order statistics. While learning the basic concepts of sorting and searching functions are fine, you must also familiarise yourself with as many library functions as possible.
Once you learn how to work with strings, you’ll find it extremely interesting. Strings are a must-learn as they are used extensively in competitive programming contests.
Try to learn how to manipulate string functions such as Z’s algorithm, KMP algorithm, Rabin Karp, and Aho Corasick string matching, to name a few. If you can learn library functions for strings, even better!
Just like data structures, algorithms are also essential for competitive programming. Algorithms are classified into the following categories:
- Dynamic Programming algorithms – Longest Common Subsequence, Longest Increasing Subsequence, Minimum Partition, Longest Path In Matrix, Subset Sum Problem, 0-1 Knapsack Problem, and Assembly Line Scheduling.
- Graph algorithms – Breadth-First Search (BFS), Depth First Search (DFS), Dijkstra, Floyd Warshall, Prim, Kruskal, Johnson’s algorithm, Topological Sort, and Bridges in a graph.
- Greedy algorithms – Activity Selection Problem, Huffman Coding, Huffman Decoding, Egyptian Fraction, Job Sequencing Problem, Water Connection Problem, and Fitting Shelves Problem.
- Geometric algorithms – Convex Hull, Graham Scan, Line Intersection, Matrix Exponentiation, Bentley Ottmann algorithm, Rotating Calipers Technique, Closest pair of points, and Voronoi Diagrams of n points using Fortune’s algorithm.
- Network Flow algorithms – Maxflow Ford Fulkerson algorithm, Edmond Karp Implementation, Min-cut, Stable Marriage Problem, Dinic’s Algorithm, Cycle Cancelling algorithm, Stoer Wagner min-cut algorithm, and Hopcroft–Karp Algorithm.
Prep Up for Your Dream Job with Coding Ninjas Premium Courses.
When it comes to programming, one must have a solid foundation in Mathematics and Statistics since a lot of programming problems are rooted in these two subjects.
Thus, you must learn basic math concepts such as number theory, linear algebra, discrete mathematics and combinatorics, probability theory, game theory, graph theory, numerical analysis, and calculus.
Also, be well-versed with principles like Induction, Pigeon Hole, Inclusion-Exclusion, and the like. Moving on to Statistics, make sure that you learn concepts like mean, median, variance, and so on.
Frequently Asked Questions
There are plenty of resources available for competitive programming. Follow the resources mentioned in this article religiously, keep competing on platforms like codeforces and be consistent in your endeavours. People who previously got shortlisted for ACM ICPC have written numerous blogs on their preparation strategies, make sure to check them out as well.
After registration, every region will have a preliminary online round after which teams will be shortlisted and invited to the onsite round. The ones who get shortlisted during the onsite round will be participating in the world finals representing their respective sites.
Yes, Python is allowed in ACM ICPC.
Mastering the concepts mentioned above should be enough for you to make it through the regional round of the ACM-ICPC. Once that’s done, there’s nothing to stop you from emerging as a winner in this prestigious competition.
If you are preparing for TCS Codevita 2021 please go through the blog.
The key to success is dedication, commitment, and practice. During the learning process, try to connect with mentors and peers on the various OJ platforms. Usually, such communities are very active and can help you with helpful feedback if you are ever stuck somewhere.
Be confident, and begin!
Happy Learning 2021!!