Arreglos
“Truco del arreglo autolimpiante”
STL (set, multiset, map, multimap, vector, queue, stack, deque, priority_queue, list, etc)
Listas enlazadas
Colas
Pilas
Tries
Hashing
Árbol binario de búsqueda (TREAP)
Heap (para priority queue), heapsort, heapify en O(N)
Union Find (Implementacion con listas y con arbol, la de listas es facil de codear y permite iterar las componentes, se aplica al problema Hackers de la local de UBA 2010)
RMQ (Segment tree sobre arreglo) (Updates con recalculo vs acumulativos) (Multi Dimension)
Sliding Windows, Sliding-RMQ (para en O(N) calcular el RMQ de subarreglos de un tamaño K dado)
Variante de sliding window RMQ con dos 2deque para guardar los dos mejores
“La DP de Huguito” (anda para cualquier operador asociativo, eso incluye “guardar los mejores k”)
“Estructura de los saltitos potencia de 2” en árbol con raíz
LCA en O(lg n) u O(1) (Usando reduccion a RMQ, o usando la estructura de los saltitos). Aplicación para calcular distancias en un árbol en O(lg n)
Queries en árboles: Caminos, LCA, linealizar, estructura saltitos potencia de 2 (generaliza sparse table a un árbol: en el caso estático va joya), queries subarbol, Persistencia, “truquito + -” para el camino (evita HL-decomposition cuando la operación tiene inverso), Heavy-Light decomposition.
Tablas Aditivas (Multi Dimension)
Sparse Table (Multi Dimension)
Binary Index Tree (Fenwick Tree) (Multi Dimension)
Persistencia (En Segment Trees, TREAPs, Fenwicks, Stacks, etc)