What are some lesser-known algorithms that are useful in competitive programming?
Some lesser-known but useful algorithms include the Sieve of Eratosthenes for prime numbers, Tarjan's algorithm for strongly connected components, and the Hopcroft-Karp algorithm for bipartite matching problems.
While mainstream algorithms like quicksort, merge sort, Dijkstra's algorithm, and dynamic programming techniques are essential for competitive programming, there are several lesser-known algorithms that can give you an edge. The Sieve of Eratosthenes, for example, is an efficient algorithm for finding all primes up to a certain number, which can save time in problems involving large numbers. Tarjan's algorithm is another powerful tool for finding strongly connected components in a graph, which is useful in problems related to graph theory. Additionally, the Hopcroft-Karp algorithm is used to solve maximum bipartite matching problems in O(E√V) time, making it faster than the Ford-Fulkerson method for such tasks. Other useful techniques include the Z-algorithm for string pattern matching, which can be more efficient than KMP in certain situations. Learning and applying these algorithms in the right context will give you an edge, especially in contests where most participants stick to the more popular solutions. Practice using these algorithms on graph-heavy or prime-number-related problems to become familiar with their nuances.