These topics and concepts essential for competitive programming.
For the complete schedule, please refer to the Complete Schedule and Problem List.
- Searching and Sorting: Binary search, Merge sort, Quick sort.
- Graph Algorithms: Breadth-first search (BFS), Depth-first search (DFS), Dijkstra's algorithm, Floyd-Warshall, Kruskal's algorithm, Prim's algorithm, Topological sort.
- Dynamic Programming: Understanding the concept of state, memoization, and tabulation.
- Greedy Algorithms: Activity selection, Fractional knapsack, etc.
- Divide and Conquer: Master theorem, Strassen’s Matrix Multiplication, Closest Pair of Points.
- Backtracking: N-Queens problem, Hamiltonian cycle, Sudoku solver.
- String Algorithms: KMP, Z-algorithm, Rabin-Karp, Manacher's algorithm.
- Number Theory: Euclidean algorithms, Modular arithmetic, Fermat’s theorem, Euler’s totient function.
- Bit Manipulation: Basic operations, Bitmasking.
- Geometry: Convex hull, Line intersection.
- Arrays and Strings.
- Linked Lists: Singly linked list, Doubly linked list.
- Stacks and Queues.
- Trees: Binary trees, Binary search trees, AVL trees, Segment trees, Fenwick trees.
- Heaps: Binary heap, Fibonacci heap.
- Hashing: Hash table, Hash functions.
- Graphs: Adjacency matrix, Adjacency list.
- Disjoint Set: Union-find data structure.
- Tries.
- Containers: Vector, List, Deque, Set, Multiset, Map, Multimap.
- Algorithms: Sort, Reverse, Permute, Lower_bound, Upper_bound.
- Iterators.
- Utility Classes: Pair, Stack, Queue.
- Combinatorics: Permutations, Combinations, Pigeonhole principle.
- Probability.
- Number Theory: Prime numbers, Greatest common divisor, Least common multiple.
- Geometry: Basic concepts about points, lines, angles, and polygons.
- Linear Algebra: Matrices, Determinants.
- Calculus: Especially if dealing with optimization problems.
- Recursion.
- Problem-solving Paradigms: Brute force, Sliding window.
- Advanced Data Structures: Suffix arrays, Suffix trees, Treap, etc.