C3 Roadmap
C3 Roadmap
- By C3
Topics to study:
(Note: this is the whole CP syllabus, we don't expect that you learn all the topics for
Recruitment. Go step by step, and cover whatever you can, focus on quality over quantity.)
1. Basics
- C++ basics (variables, if-else, loops, functions, recursion, arrays, pointers)
- Time and Space complexity (Big-O notation)
2. STL library
- vectors, sets, multisets, maps, pairs
- Iterators
- Basic library functions, custom comparators (for sort)
- Struct
3. Prefix Array
- Solving basic ranged query type problems using prefix/suffix array
precomputation.
- Difference array technique
- 2D prefix array
6. Number theory
- Modulus properties
- Binary exponentiation
- Euclidean Algorithm for GCD
- All possible factors in O(sqrt(n))
- Sieve of Eratosthenes (V. Imp)
- Smallest Prime factor (SPF), Prime factorization in O(logn) per query
- Modulo inverse
- ETF, chinese remainder theorem, and other theorems.. (less imp.)
7. Bit manipulation
- Bitwise operators(&, |, ^, !, >>, <<) and their properties.
- Basic techniques like, check a bit, set/unset a bit, flip a bit.
- Bitmasking
9. Dynamic Programming
- Top-Down approach (memoization)
- Bottom-Up approach (Tabulation)
- Knapsack problems
- Longest common subsequence(LCA), matrix chain multiplication (MCM)
problems.
- DP with bitmasking
- Digit-DP
- Must practise CSES DP problemset.
13. Tries
- Knowing the Trie data structure, and basic problems related to string prefixes
- Min-Xor/Max-Xor problems
1. Start studying the topics(resources given below), and keep practising problems
alongside.
2. You can start giving contests after learning the basics (1). Platforms mentioned
below. Just be consistent and have patience, you will see improvements.
3. When you study a topic, practise a lot of problems on that topic, before proceeding to
the next topic.
4. When stuck on a problem, try to debug yourself first, if you are unable to, look at the
editorials. If still stuck, ask your doubts in the C3 discord server.
Note: You can follow any other lectures of choice to study the topics, as long as you are
able to understand its fine. But, make sure you are not following a lengthy playlist and
wasting time on only learning DSA-theory (topics not mentioned above need not be studied
now), so that you can give more time to Problem-solving (which is the most important
for CP).
Coding Platforms:
1. https://codeforces.com/
2. https://atcoder.jp/home
3. https://www.codechef.com/
4. https://www.hackerrank.com/auth/login
5. https://cses.fi/register/
6. https://www.spoj.com/
Compiler/Language to use on these platforms for C++ (make sure to select before
submission)
● Codeforces: GNU G++17 / GNU G++20
● Atcoder: C++ (GCC 9.2.1)
● Codechef: C++17
● Hackerrank: C++14
● CSES: C++
● Spoj: C++14 (gcc 8.3)
For beginners:
1. Codechef starters (every Wed)
2. Atcoder ABC contest (every Sat)
3. CF div 3, CF div 4
1. Topic-Wise practise
- You will be given some practice problems in the C3 group, attempt those.
- For basics (if you are starting) - practise on Hackerrank :
https://www.hackerrank.com/domains/algorithms
(Apply warm-up, Implementation, filter)
- CSES problemset : https://cses.fi/problemset/
- Codeforces Edu : https://codeforces.com/edu/courses
(Go to pilot courses -> enroll)