This repository contains Java implementations of advanced algorithms and data structures used in competitive programming. Contents include array sorting, searching, advanced dynamic programming techniques & tricks, computational geometry, graph algorithms, math (e.g. fast exponentiation), segment trees and variations (e.g. Segment Tree Lazy Propagation, 2D Segment Trees), other range query techniques, string algorithms, tree algorithms, and utility files such as input generation and testing.
The implementations of each algorithm are verbose, and are meant to be conceptually instructive, but not to be implemented as-is in a contest. Each file is structured to be used standalone, so all algorithms are implemented as a nested static class, to not pollute the namespace.