Skip to main content

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.
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
Start Level 0 Tutorials
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)
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
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?

  1. Be Consistent: Solving one problem a day is better than ten problems once a week.
  2. Follow the Path: Don’t skip levels. A strong foundation is key to advanced topics.
  3. Practice, Practice, Practice: Knowledge without implementation is useless. All links to sheets and contests are available in each level’s overview.