Competitive Programming Theory
Competitive Programming Theory
Input / Output
o Integer Input / Output
o Float Input / Output
o Char Input / Output
o String Input / Output
o List Input / Output
o Matrix Input / Output
Mathematics
o Prime Number And Sieve of Eratosthenes
o Modulo Arithmetic
o Inverse Modulo
o Fermat Little Theorem
o GCF And LCM
o Linear Diophantine
o Extended Euclid
o Combination And Permutation
o Bit Manipulation
o Big Number
o Fast Exponentiation
o Matrix Exponentiation
Computational Geometry
o Vector And Operations
o Area Calculation
o Convex Hull
o Line Intersection
Data Structure
o Array
o Bit Array
o Graph
o Tree
o Disjoint Set
o Binary Indexed Tree / Fenwick Tree
o Binary Search Tree
o Heap
o AVL Tree
o Treap
o Segment Tree
o Range Minimum Query (RMQ)
o Range Tree
o Suffix Tree
o Suffix Trie
o Suffix Array
o Hash Table
STL
o Vector
o List
o Set / Multi Set
o Map / Multi Map
o Stack
o Queue
o Priority Queue
Sorting
o Bubble Sort
o Selection Sort
o Insertion Sort
o Shell Sort
o Quick Sort
o Merge Sort
o Count Sort
o Radix Sort
o Heap Sort
o Topo Sort
Linear Data Searching
o Linear Search
o Binary Search
Graph Data Searching
o Breadh First Search (BFS)
o Depth First Search (DFS)
o Depth Limited Search (DLS)
o Iterative Deepening Depth First Search (IIDFS)
Path Finding & Shortest Path
o Breadth First Search
o Depth First Search
o Floyd Warshall Algorithm
o Bellman Ford Algorithm
o Djikstra Algorithm
o A Star (A*) Algorithm
Divide And Conquer
Dynamic Programming
o Coin Change
o Knapsack Zero One
o Matrix Chain Multiplication (MCM)
o Longest Increasing Subsequence (LIS)
o Longest Common Subsequence (LCS)
o Edit Distance
o DP On Tree / DP On DAG
o DP Bitmask
o DP Profile
o DP Convex Hull
Greedy
o Coin Change
o Fractional Knapsack
o Interval Selection Problem
String Processing
o Rabin Karp Algorithm
o Knuth Morris Prat Algorithm