Skip to content

Programming Techniques Guide

Welcome to the comprehensive guide to programming techniques and algorithms! This documentation covers essential techniques used in competitive programming, software development, and algorithmic problem-solving.

Categories & techniques

Our techniques are organized into the following categories with their respective techniques:

Category Description Techniques
🔍 Brute Force & Search Techniques for systematically exploring solution spaces and finding optimal solutions through exhaustive search methods. Boolean CounterGenerating SubsetsRecursive BacktrackingSearch PruningMeet-in-the-MiddlePermutation Enumeration
📊 Counting & Precomputation Methods for efficiently counting elements, managing frequencies, and preprocessing data for faster queries. Frequency ArraysStatic Array QueriesPrefix ArraysDifference ArraysSieve of Eratosthenes
🎯 Dynamic Programming Advanced techniques for solving complex problems by breaking them down into simpler subproblems. Top-Down & Bottom-UpCoin ChangeKnapsackLongest Increasing SubsequenceGrid Path DPEdit DistanceCounting TilingsBitmask DPDP on Trees / Graphs
🌐 Graph & Network Modeling Algorithms and techniques for working with graphs, networks, and relational data structures. Graph BasicsDFS / BFSDijkstra / Bellman-FordFloyd–WarshallUnion-FindMinimum Spanning TreeTree AlgorithmsLCA & Tree QueriesStrong Connectivity & 2SATEulerian & HamiltonianFlows & Matchings
📐 Geometry & Spatial Modeling Mathematical approaches for solving geometric and spatial problems efficiently. Points & LinesDistance FunctionsPolygon AreaComplex NumbersClosest PairSweep LineConvex Hull
🔤 String & Bitwise Techniques Specialized algorithms for string manipulation and bitwise operations. KMP / Z AlgorithmTrie / Aho-CorasickString HashingBit Representation & SetsBitmask Tricks
🎮 Simulation & Modeling Techniques for simulating real-world scenarios and modeling complex systems. Two Pointer / Sliding WindowNearest Smaller ElementsSliding Window MinimumBinary Search on AnswerGreedy Algorithms
🏗️ Data Structures Essential data structures and their applications in algorithm design. Dynamic ArraysSets & MapsIterators & RangesSegment Tree / BITLazy Segment Tree2D Segment Tree / BITHeap / Priority QueueDisjoint Set (DSU)Sqrt DecompositionMo’s Algorithm
📐 Mathematical Formulas Essential mathematical formulas and concepts for geometric, counting, trigonometric, and algebraic problems. Geometric FormulasCombinatorics & CountingBinomial & CatalanInclusion–ExclusionNumber TheoryPrimes & FactorsModular ArithmeticTrigonometryLinear AlgebraLinear Recurrences & MatricesProbability & RandomizedCombinatorial Games

Getting started

Each category contains:

  • Overview: Introduction to the category and its techniques
  • Individual technique pages: Detailed explanations with examples and use cases

Navigate through the categories using the sidebar or the tabs above to explore specific techniques.

Contributing

This documentation is designed to be a living resource. Feel free to contribute improvements, examples, or additional techniques!