ATHKA Roadmap
Programming (C++)
Compiler
- CodeBlocks | Old & Lightweight
- Visual Studio Code | Customizable & Lightweight
- Visual Studio | Advanced & Heavy
Or you can use G++ directly in case of you like command line
Learning
You don't need much knowledge in C++ like OOP, you just need to know:
- Input/Output (cin/cout)
- Loops
- Conditions
- Functions & Recursion
- Data types & Operations
- Bitwise Operations
- Basic Strings
- Structs (Optional)
- Pointers (Optional)
Arabic: Harmash English: W3Schools
Youtube & Google are your best friends in case of any problem, you can ask in communities.
Expected Time: >2 weeks
Algorithms
These are the important things to learn:
- Time/Memory Complexity
- Math Algorithms
- Prime Test
- Divisors
- Prime Factorization
- Goldbach Conjecture
- Seive
- GCD/LCM
- Binary Exponentiation
- Matrices
- General Techniques & Algorithms
- Binary Search
- Two Pointers
- Prefix Sum
- Divide & Conquer (Merge Sort)
- Geometry
- Pythagorean theorem
- Vectors
- Line intersection
- Point Location Test
- Sweep Line
- Graph Algorithms
- DFS
- BFS
- Dijkstra
- MST
- Topological Sort
- Dynamic Programming
- Combinatorical Counting
- Bitmask DP
- Optimization problems
- DP on trees
- Data Strcutures
- Queue
- Stack
- DSU
- Segment Tree
- Sqrt decomposition
- Lowest Common Anceastor
- C++ Built-in Functions
sort
lower_bound
/upper_bound
/binary_search
min
/max
min_element
/max_element
swap
reverse
builtin_popcount
memset
gcd
/lcm
- C++ Built-in Data Structures
vector
set
/multiset
/unordered_set
map
pair
stack
queue
priority_queue
array
Arabic
English
- Competitive Programming Handbook (CPH)
- IUSACO Cpp
- USACO Guide
- CP Algorithms
- GeeksForGeeks
- Errichito Channel
Practice
Expected Time: Forever
Notes
- Some problems need a specific algorithm, you may learn it or ignore the problem until you reach that level.
- Dynamic Programming really much depends on the amount of different DP problems you solved