This repository contains templates for Competitive Programming in C++ envisioned and built by your one and only, Ahmad Dzuizz Annajib.
-
Data Structures
- Segment Tree
- Range Addition Update, Range Sum Query with Lazy Propagation (array)
- Range Addition Update, Range Sum Query with Lazy Propagation and Lazy Nodes (pointer)
- All-In-One Implementation (pointer) - To Be Implemented
- Fenwick Tree (Binary Indexed Tree)
- Range Addition Update, Range Sum Query (2 BITs approach)
- Disjoint Set Union (Union-Find)
- Disjoint Set Union with Path Compression and Union by Size
- Disjoint Set Union with Path Compression and Union by Rank -- To Be Implemented
- Count no. of Connected Components in a Graph
- Sparse Table - To Be Implemented
- Trie (Prefix Tree) - To Be Implemented
- Median Heap
- Median Heap with 2 Heaps (Min Heap and Max Heap) - To Be Implemented
- Balanced Binary Search Tree (e.g., AVL Tree, Red-Black Tree) - To Be Implemented
- Queue with Min/Max - To Be Implemented
- Persistent Data Structures - To Be Implemented
- Segment Tree
-
Graph Theory
- Dijkstra's Algorithm
- Breadth-First Search (BFS)
- Flood Fill Algorithm
- Depth-First Search (DFS)
- Flood Fill Algorithm - To Be Implemented
- Bellman-Ford Algorithm - To Be Implemented
- Floyd-Warshall Algorithm
- Kruskal's Algorithm - To Be Implemented
- Tarjan's Algorithm - To Be Implemented
- Topological Sorting - To Be Implemented
- Bridges and Articulation Points - To Be Implemented
- Graph Matching Algorithms - To Be Implemented
- Flow Networks (Max Flow, Min Cut) - To Be Implemented
-
Trees
- LCA (Lowest Common Ancestor) with Binary Lifting, a.k.a 2k Decomposition
- APSP (All Pairs Shortest Path) with Binary Lifting, a.k.a 2k Decomposition
- Diameter of a Tree
- Centroid Decomposition - To Be Implemented
- Heavy-Light Decomposition - To Be Implemented
- Euler Tour Technique - To Be Implemented
- DP on Tree - To Be Implemented
-
Algebra
- Matrix Exponentiation - To Be Implemented
- Extended Euclidean Algorithm - To Be Implemented
- Sieve of Eratosthenes - To Be Implemented
- Modular Arithmetic Operations - To Be Implemented
- Prime Factorization - To Be Implemented
- Modular Exponentiation - To Be Implemented
- GCD/LCM - To Be Implemented
- Fast Multiplication (Karatsuba, FFT) - To Be Implemented
- Combinatorics (Combinations, Permutations) - To Be Implemented
-
Dynamic Programming
- 0/1 Knapsack Problem - To Be Implemented
- Longest Common Subsequence - To Be Implemented
- Coin Change Problem - To Be Implemented
- Edit Distance - To Be Implemented
- Matrix Chain Multiplication - To Be Implemented
- Longest Increasing Subsequence - To Be Implemented
- Digit DP - To Be Implemented
- Bitmask DP - To Be Implemented
- DP on Trees - To Be Implemented
- Knuth Optimization - To Be Implemented
- DP with Probabilities - To Be Implemented
-
Geometry
- Convex Hull (Graham's Scan)
- Dynamic Convex Hull Trick for DP optimization
- Monotone Chain Algorithm - To Be Implemented
- Line Intersection - To Be Implemented
- Closest Pair of Points - To Be Implemented
- Polygon Area - To Be Implemented
- Point Inside a Polygon Check - To Be Implemented
- Geometric Transformations - To Be Implemented
- Rotating Calipers - To Be Implemented
- Convex Hull (Graham's Scan)
-
String Processing
- KMP Algorithm - To Be Implemented
- Z-Algorithm
- Manacher's Algorithm - To Be Implemented
- Rabin-Karp Algorithm - To Be Implemented
- Suffix Array and LCP - To Be Implemented
- Aho-Corasick Algorithm - To Be Implemented
- Suffix Automaton - To Be Implemented
-
Numerical Algorithms
- Fast Fourier Transform - To Be Implemented
- Binary Exponentiation - To Be Implemented
- Chinese Remainder Theorem - To Be Implemented
- Euclidean Algorithm for GCD - To Be Implemented
- Newton-Raphson Method for Numerical Root Finding - To Be Implemented
- Simpson's Rule (Numerical Integration) - To Be Implemented
- Linear Algebra Techniques - To Be Implemented
-
Classic Techniques
- Binary Search - To Be Implemented
- Two Pointers - To Be Implemented
- Sliding Window - To Be Implemented
- Meet in the Middle - To Be Implemented
- Divide and Conquer - To Be Implemented
- Greedy Algorithms - To Be Implemented
- Backtracking - To Be Implemented
- Brute Force - To Be Implemented
- Recursive Techniques - To Be Implemented
-
Miscellaneous
- Counting Inversions with Merge Sort - To Be Implemented
- Sliding Window Technique - To Be Implemented
- Two Pointers Technique - To Be Implemented
- Bitmasking Techniques - To Be Implemented
- Game Theory (Nim Game, Grundy Numbers) - To Be Implemented
- Mo's Algorithm - To Be Implemented
- Randomized Algorithms - To Be Implemented
- Optimization Techniques (Hill Climbing, Simulated Annealing) - To Be Implemented
If you have any suggestions on any improvements, please do not hesitate to contact me at ahmad.dzuizz.annajib@gmail.com.