The HNU ICPC Path
Our training program is structured into levels, each focusing on a specific set of skills and algorithms. Follow this path to build a world-class foundation in competitive programming.Level 0 Training
Level 0 Training
Info
- It covers foundational topics to build a strong base in programming and problem-solving.
- This level is an introductory level designed for beginners.
Content
- Data Types
- Conditions & Loops
- Arrays & Strings
- Functions & Complexity Analysis
- STLs
- Part 1: (Vector, Pair, Deque, Queue, Priority Queue, Stack)
- Part 2: (Set, Multiset, Ordered Set, Unordered Set, Map, Unordered map)
- Static Range Queries
- Frequency Array
- (1D/2D) Prefix Sum
- (1D/2D) Partial Sum
Level 1 Training
Level 1 Training
Info
- This level is an intermediate level designed for those with basic programming knowledge, aiming to deepen their problem-solving skills.
- It covers advanced topics to enhance algorithmic thinking and efficiency.
Content
- Two Pointers
- Binary Search
- Complete Search
- Recursion and Backtracking
- (Iterative) using Bitmasks
- Counting Principles
- Addition, Multiplication, nCr, nPr, Inclusion-Exclusion
- Number Theory
- Part 1: Divisors, Prime Factorization, Sieve
- Part 2: Modular Arithmetic, Binary Power, Mod inverse, GCD, LCM
- Intro to Graphs
- Representation & Traversal (BFS/DFS)
Level 2 Training
Level 2 Training
Info
- This level is an advanced level designed for those with a solid foundation in programming and competitive programming, aiming to master complex algorithms and data structures.
- It covers sophisticated topics to tackle challenging problems.
Content
- Strings
- Trie (Prefix Tree)
- String Hashing
- Graphs
- SSSP (Dijkstra)
- DSU with Rollbacks and MST
- Lowest Common Ancestor (LCA)
- Dynamic Programming
- Classical DP (0/1 Knapsack, LCS, LIS, CC, Ranges, Building Output)
- Digits and DP with masks
- Range Queries
- Sparse Table
- Segment Tree (Point/Range updates)
- Lazy Segment Tree
Level 3 Training
Level 3 Training
Info
- This level is an expert level designed for advanced competitive programmers with a strong grasp of algorithms and data structures, aiming to tackle highly complex problems.
- It covers specialized and cutting-edge topics.
Content
- Strings
- KMP & DP With KMP
- Suffix Array
- Aho Corasick
- Graphs
- APSP (Floyd-Warshall) & Bellman
- Euler Walk of tree / Mo on trees
- Small To Large merging / DSU on Trees (Sack)
- Heavy Light Decomposition
- Geometry
- Dynamic Programming
- Iterative DP and DP With DS
- Non-classical DP
- Range Queries
- Fenwick tree (1D/2D)
- Sqrt-decomposition and MO’s algorithm
- Persistent Segment Tree
- Matrix Power
How to use this roadmap?
- Be Consistent: Solving one problem a day is better than ten problems once a week.
- Follow the Path: Don’t skip levels. A strong foundation is key to advanced topics.
- Practice, Practice, Practice: Knowledge without implementation is useless. All links to sheets and contests are available in each level’s overview.