Concepts52

πŸ—‚οΈData StructureAdvanced

Suffix Automaton - Advanced Usage

A suffix automaton (SAM) is a compact DFA that captures all distinct substrings of a string and supports many advanced queries in linear time.

#suffix automaton#endpos#suffix link+12
πŸ—‚οΈData StructureAdvanced

Suffix Automaton

A suffix automaton (SAM) is the minimal deterministic finite automaton that recognizes all substrings of a string, built online in O(n) time and space.

#suffix automaton#endpos equivalence#suffix link+12
πŸ—‚οΈData StructureAdvanced

Aho-Corasick Automaton

Aho–Corasick is a trie with failure links that finds all occurrences of many patterns in a single pass over the text.

#aho-corasick#multi-pattern matching#trie+12
πŸ—‚οΈData StructureAdvanced

Suffix Array - LCP Array Applications

The LCP (Longest Common Prefix) array, built alongside a suffix array, unlocks fast solutions to problems like longest repeated substring, number of distinct substrings, and longest common substring.

#suffix array#lcp array#kasai algorithm+12
πŸ—‚οΈData StructureAdvanced

Euler Tour Tree

An Euler Tour Tree represents each rooted tree as a DFS open/close sequence so that every subtree is a single contiguous interval.

#euler tour tree#implicit treap#dynamic forest+11
πŸ—‚οΈData StructureAdvanced

Suffix Array

A suffix array stores the starting indices of all suffixes of a string in lexicographic order.

#suffix array#lcp array#kasai algorithm+11
πŸ—‚οΈData StructureAdvanced

Centroid Decomposition - Distance Queries

Centroid decomposition splits a tree into levels by repeatedly removing a centroid so that each remaining component is at most half the size.

#centroid decomposition#tree distance queries#nearest red node+12
πŸ—‚οΈData StructureAdvanced

Centroid Decomposition

Centroid decomposition splits a tree around a special node (centroid) so that every remaining component has at most half the nodes.

#centroid decomposition#centroid tree#tree algorithms+11
πŸ—‚οΈData StructureAdvanced

HLD - Path Queries and Updates

Heavy-Light Decomposition (HLD) breaks a tree into a small number of vertical chains so any path (u,v) becomes O(log n) contiguous segments in an array.

#heavy light decomposition#hld#path query+12
πŸ—‚οΈData StructureAdvanced

Splay Tree

A splay tree is a self-adjusting binary search tree that moves the most recently accessed node to the root with rotations.

#splay tree#self-adjusting bst#zig+12
πŸ—‚οΈData StructureAdvanced

Implicit Treap

An implicit treap is a randomized balanced binary tree that treats array positions as keys without storing them explicitly.

#implicit treap#treap#split and merge+11
πŸ—‚οΈData StructureAdvanced

Persistent Segment Tree

A persistent segment tree stores every historical version of an array-like data while supporting queries and updates in O(log n) time.

#persistent segment tree#path copying#kth smallest+12