Avanzado
Estructuras de datos
Convexidad
Grafos
- Caminos más cortos con pesos de arista negativos
- Encontrar un ciclo negativo en el grafo
- Tours de Euler
- Encontrar el camino euleriano en O(M)
- BCCs y 2CCs
- Encontrar puentes en un grafo en O(N+M)
- Encontrar puentes de forma online
- Encontrar puntos de articulación en un grafo en O(N+M)
- Orientación fuerte
- Componentes fuertemente conexas
- Componentes fuertemente conexas y grafo de condensación
- 2-SAT
- Borrado offline
- Borrar de una estructura de datos en O(T(n) log n)
- Fórmula de Euler
- Encontrar las caras de un grafo planar
- Críticos
- Link Cut Tree
Programación dinámica
Flujos
- Flujo máximo
- Flujo máximo - Ford-Fulkerson y Edmonds-Karp
- Flujo máximo - algoritmo de Dinic
- Flujo máximo - algoritmo MPM
- Flujo máximo - algoritmo Push-relabel
- Flujo máximo - método Push-relabel mejorado
- Algoritmo de Kuhn para matching bipartito máximo
- Corte mínimo
- Corte mínimo - algoritmo de Stoer-Wagner
- Conectividad de aristas / Conectividad de vértices
- Flujo con cotas inferiores
- Flujos con demandas
- Flujo de costo mínimo
- Flujo de costo mínimo - algoritmo de caminos más cortos sucesivos
- Algoritmo húngaro para resolver el problema de asignación
- Resolver el problema de asignación usando min-cost-flow
Polinomios
Cadenas
- Búsqueda en strings
- Función prefijo. Algoritmo de Knuth–Morris–Pratt
- Función Z y su cálculo
- Algoritmo de Manacher - Encontrar todos los sub-palíndromos en O(N)
- Algoritmo de Aho-Corasick
- Parseo de expresiones
- Arreglo de sufijos
- Arreglo de sufijos
- Estructuras de sufijos de strings
- Autómata de sufijos
- Árbol de sufijos. Algoritmo de Ukkonen
- Factorización de Lyndon
- Encontrar repeticiones
Temas variados
- Algoritmo de Euclides extendido
- Algoritmo de Euclides extendido
- Ecuación diofántica lineal
- Ecuación de congruencia lineal
- Teorema Chino del Resto
- Algoritmo de Garner
- Raíz primitiva
- Raíz discreta
- Logaritmo discreto
- Multiplicación de Montgomery
- Fracciones continuas
- El árbol de Stern-Brocot y las sucesiones de Farey
- Números de Catalan
- Números de Catalan
- Secuencias de paréntesis balanceadas
- Lema de Burnside / teorema de enumeración de Pólya
- Contar grafos etiquetados
- Código de Prüfer
- Teorema de Kirchhoff. Encontrar el número de árboles de expansión
- Base XOR
- Método de Gauss para resolver sistemas de ecuaciones lineales
- Calcular el determinante de una matriz por Gauss
- Calcular el determinante usando el método de Kraut
- Hallar el rango de una matriz
- Búsqueda por fractura
- Teoría de juegos
- Teorema de Sprague-Grundy. Nim
- Juegos sobre grafos arbitrarios
- Juego del 15: existencia de la solución
- Sumas de prefijos de funciones aritméticas (Parte 1)
- Sumas de prefijos de funciones aritméticas (Parte 2)
- Intersección de matroides
- Aleatoriedad
- Recocido simulado (Simulated Annealing)
- Problemas interactivos y de comunicación
- Vectorización en C++
- Aritmética de precisión arbitraria