Practice with VNOI Roadmap

Step by step guide to becoming an Android developer.

Back to home

Legend

Propose
Alternatives
Options

1 Introduction & Basic Techniques

Input/Output & Data Types
Prefix Sums, Difference Arrays
Greedy Technique
Recursion & Backtracking

2 Sorting & Binary Search

Sorting Algorithms
Binary Search
Binary Search the Answer
Two Pointers / Sliding Window

3 Dynamic Programming (Part 1)

Longest Increasing Subsequence (LIS)
Knapsack Problem
Longest Common Subsequence (LCS)
Grid DP

4 Basic Data Structures

Stack & Queue
Fenwick Tree (BIT)
Segment Tree
Lazy Propagation

5 Graph Algorithms (Part 1)

Graph Representation
DFS & BFS
Dijkstra's Algorithm
Bellman-Ford & Floyd-Warshall

6 Dynamic Programming (Part 2)

Tree DP
Bitmask DP
Probability DP
DP Optimizations

7 Graph Algorithms (Part 2)

Minimum Spanning Tree (MST)
Topological Sort
Strongly Connected Components (SCC)
Lowest Common Ancestor (LCA)

8 Number Theory & Combinatorics

Sieve of Eratosthenes
Modular Arithmetic & Fast Exponentiation
Extended Euclidean Algorithm
Combinatorics & Inclusion-Exclusion

9 String Processing

String Hashing
KMP Algorithm
Trie
Z-algorithm

10 Advanced Data Structures

Disjoint Set Union (DSU)
Sparse Table
SQRT Decomposition
Persistent Segment Tree

11 Computational Geometry

Basic Vector Operations
Convex Hull
Line Sweep
Closest Pair of Points

12 Olympic Topics

Max Flow
Fast Fourier Transform (FFT)
Game Theory
Suffix Array

Visit the following related paths and keep learning.