Este repositorio contiene templates de algorimtos y estructuras de datos populares codificados en C++ para usar en competencias de programación.
Comando - Descripción
-
Misc
-
Debugging
to_string_main- metodo to_string de los principales tipos de datos y estructuras de datos estandard.to_string_other- metodo to_string de pairs, tuple y bitset.
-
Misc
misc_main- Macros principales del template.misc_data_types- Macros para acortar los tipos de datos numericos.misc_pairs- Macros para acortar las tuples y pairs.misc_precise- Macros para acortar la precision de decimales.misc_infinity- Macros que define las constantes de infinito.misc_loops- Macros para acortar los loops.misc_min_max- funciones min y max por referencia.misc_directions- Array con los valores para explorar una cuadricula 2D.misc_reference- Macros para acurtar el codigo de las referencias de un vector y fill un array.misc_math- Algunas constantes y funciones matematicas.misc_vector_n_d- Funciones para acortar la creacion de un vector de 2,3 y 4 dimensiones.misc_cond- Funciones y macros para acortar condiciones.misc_bits- Operaciones con Bits.misc_unique- Eliminar valores duplicados de un vector.misc_y_combinator- Permite hacer una función Lambda Recursiva.
-
-
Geometry
2d_geometry_point- Objeto Point.2d_geometry_polygon- Objeto Polygon.2d_geometry_area- Algoritmo que calcula el area de un poligono.2d_geometry_perimeter- Algoritmo que calcula el perimetro de un poligono.2d_geometry_convex_hull_mc- Algoritmo de Convex Hull (Monotone Chain).
-
Math
math_check_prime- Test de Primalidad de un numero.math_divisors- Obtener todos los divisores de un numero.math_gcd_recursive- Maximo comun divisor (Implementación Recursiva).math_gcd_iterative- Maximo comun divisor (Implementación Iterativa).math_lcm- Minimo comun multiplo.math_prime_factors- Obtener los factores primos de un numero.math_sieve- Todos los numeros primos en un rango dado.math_is_power_of_n- Algoritmo que verifica si un numero es potencia den.math_matrix- Clase que representa a una matrix 2D con sus operaciones matriciales.math_polynomial- Clase Polinomio con las siguientes Operaciones (Suma, Resta, Multiplicación, Division y Modulo).math_diophantine_best- Funcion Diofandina que cumple la siguiente condicion |x|, |y| <= max(|a|, |b|, |c|).math_diophantine_std- Implementacion estandar de la Funcion Diofandina.math_extgcd_iterative- Algoritmo Extendido de Euclides (Iterativo).math_extgcd_recursive- Algoritmo Extendido de Euclides (Recursivo).math_fft_iterative- Algoritmo de la Transformada Rapida de Fourier (Iterativo).math_fft_recursive- Algoritmo de la Transformada Rapida de Fourier (Recusiva).math_factorial- Implementación del Factorial.
-
Query Range
range_query_segment_tree- Estructura de datos Segment Tree.range_query_sum_immutable- Consultas de suma en rangos (Immutable).ange_query_sum_2d_immutable- Consultas de sumas en rangos 2D (Immnutable).range_query_fenwick_tree_std- Arbon binario Indexado estandard (fenwick tree)range_query_segment_tree_lazy_compress- Estructura de datos Segment Tree Lazy propagation con (add, max, min, index) operaciones comprimido.range_query_segment_tree_lazy_full- Estructura de datos Segment Tree Lazy propagation con (add, max, min, index) operaciones completo incluye metodos find_first y find_last.range_query_segment_tree_lazy_template- Template de la estructura de datos Segment Tree Lazy propagation.range_query_sum_lower_bound_segment_tree_lazy- Algoritmo Lower Bound en el Segment Tree Lazy.range_query_find_less_than_segment_tree_lazy- Encontrar el elemento menor mas a la derecha de un valor dado en el Segment Tree Lazy.range_query_dynamic_segment_tree- Implementacion de un Segment Tree con nodos Dinamicos.range_query_persistent_segment_tree- Implementacion de un Segment Tree Persistente.range_query_sqrt_decomposition- Implementacion de SQRT Descomposition usando Bucket
-
Graph
graph_graph- Clase padre de la representacion de un grafo.graph_digraph- Clase hijo que representa a un grafo dirigido.graph_undigraph- Clase hijo que representa a un grafo no dirigido.graph_dijkstra_std- Algoritmo de Dijkstra.graph_dijkstra_path- Algoritmo de Dijkstra que permite reconstruir la ruta.graph_dsu- Estructura de datos Disjoint Set Union.graph_toposort_dfs- Algoritmo de ordenamiento topologico usando dfs.graph_kruskal- Algoritmo de Kruskal (Minimo Arbol de Expansión).graph_scc_kosaraju- Algoritmo de Kosaraju para buscar los Componentes fuertemente conexos (SCC).graph_bellman_ford- Algoritmo estandard de Bellman Ford.graph_find_cycle- Encuentra circulos en un Grafo.
-
Data Structure
data_structure_mos_algorithm- Implementación del Algoritmo de Mo.data_structure_trie_automaton- Implementación del Arbol de Prefijos mediante un Automata.data_structure_trie_dynamic- Implementación del Arbol de Prefijos mediante un Nodos Dinamicos.data_structure_tree_order_statistic- Implementacion de un Tree Order Statistic en Set y Map.
-
Numeric
numeric_mint_full- Template Completo de Aritmetica Modular.numeric_mint_compress- Template Completo de Aritmetica Modular Comprimido.numeric_mod- Template de Aritmetica Modular Basica.numeric_bigint- Template Completo para hacer operaciones numericas con numeros muy grandes.numeric_fastpow- Calcula potencias rapidamente.
-
String
string_suffix_array- Algoritmo de Suffix Array.string_kmp- Algoritmo Knuth-Morris-Pratt (KMP).string_lps- Mas grande prefijo que es tambien sufijo (Longest prefix suffix).string_trie- Estructura de datos Arbol de Prefijos Trie (Prefix Tree).string_manacher- Algoritmo Manacher (Encontrar todos los substring palindromos de un string en O(n)).string_split- Función split en string.string_hashing- Implementación de Rolling Hashing
-
Combinatorics
combinatorics_combinations_permutations- Metodos que permiten contar el numero de combinaciones y permutaciones de un conjunto de elementos.combinatorics_next_combination- Metodo que generan todas la combinaciones de un conjunto denelementos con subconjuntos dekelementos.combinatorics_all_combinations_backtracking- Metodo que generan todas la combinaciones de un conjunto denelementos con subconjuntos dekelementos usando backtracking.
-
Random
random_init- Generar valor aleatorio en un rango.random_permutation- Generar permutación aleatoria.random_vector- Generar vector aleatorio.
-
Searches
searches_binary_search_I- Implementacion estandar de busqueda binaria.searches_binary_search_II- Segunda Implementación de busqueda binaria.searches_binary_search_III- Implementacion de busqueda binaria basada en busqueda exponencial.
-
Techniques
techniques_divide_and_conquer- Template de la Técnica Divide y Conquistaras.techniques_sliding_windows- Template de la Técnica Ventana Deslizante.techniques_sweep_line- Template de la Técnica Linea de Barrido.techniques_two_pointer1_pointer2- Template de la Técnica de dos punteros en dos secuencias.techniques_two_pointer_left_right_boundary- Template de la Técnica de dos punteros "Limite izquierdo y derecho".techniques_two_pointers_old_and_new_state- Template de la Técnica de dos punteros "Estado viejo y nuevo".techniques_two_pointers_slow_fast- Template de la Técnica de dos punteros "Puntero lento y rapido".
-
IO - Input/Output
io_print- Imprime varias variables con codigo corto.io_read_write- Leer datos de (vector, list, forward_list or deque) y los imprime
-
Template
template_main- Template con Task para c++17.template_std- Template para c++17.template_test_case- Fragmento de caso de pruebatemplate_usaco- Template para usaco.orgtemplate_spoj- Template para spoj.comtemplate_std_leetcode- Template para leetcode.comtemplate_random- Template para generar casos de prueba aleatorios.
-
Debugging
- Algunos componentes del codigo fuente de este folder fué extraido de the-tourist/algo
misc > debug.cpp➡️ Por Gennady Korotkevich (Tourist)
- Algunos componentes del codigo fuente de este folder fué extraido de the-tourist/algo
-
Graph
- Algunos componentes del codigo fuente de
graph/graph_digraph.cpp,graph/graph_graph.cppygraph/undigraph.cppfué extraido de the-tourist/algograph > ...➡️ Por Gennady Korotkevich (Tourist)
- Algunos componentes del codigo fuente de
-
Numeric
-
Algunos componentes del codigo fuente de
numeric/numeric_mint.cppfué extraido de the-tourist/algonumeric > mint.cpp➡️ Por Gennady Korotkevich (Tourist) -
Algunos componentes del codigo fuente de
numeric/bitint.cppfué extraido de indy256/codelibrarynumeric > bitint.cpp➡️ Por Andrei Navumenka
-
-
String
-
Algunos componentes del codigo fuente de
string/string_suffix_array.cppfué extraido de ekzhang/librarysuffix_array.cpp➡️ Por Eric Zhang -
Algunos componentes del codigo fuente de
string/string_hashing.cppfué extraido de mavd09/notebook_unalString/Hashing.cpp➡️ Por Osman Jimenez, Manuel Vergara y Víctor Ramírez -
Algunos componentes del codigo fuente de
string/string_hashing_dynamic_compress.cppfué extraido de ekzhang/libraryhashing_bit.cpp➡️ Por Eric Zhang
-
-
Query Range
- Algunos componentes del codigo fuente de este folder fué extraido de the-tourist/algo
data > segtree.cpp➡️ Por Gennady Korotkevich (Tourist)
- Algunos componentes del codigo fuente de este folder fué extraido de the-tourist/algo
-
Combinatorics
- Algunos componentes del codigo fuente de este folder fué extraido de indy256/codelibrary
cpp > combinatorics > enumerating_combinations.cpp➡️ Por Andrei Navumenka (indy256)
- Algunos componentes del codigo fuente de este folder fué extraido de indy256/codelibrary