Introdução
Dê o primeiro passo no mundo da programação competitiva!
Standard Template Library
Biblioteca do C++ que fornece estruturas de dados e algoritmos genéricos, como vetores, listas, filas, pilhas e conjuntos, otimizando a manipulação de dados.
Força bruta, recursão e backtracking
Pertencem à família de algoritmos exaustivos, que exploram todas as possibilidades até encontrar uma solução.
Algoritmo Guloso, Divisão e Conquista
Fazem parte da família de estratégias heurísticas e recursivas, onde guloso escolhe a melhor opção localmente e divisão e conquista resolve problemas dividindo-os em subproblemas menores.
Programação Dinâmica
Técnica de otimização que resolve problemas dividindo-os em subproblemas sobrepostos, armazenando soluções intermediárias para evitar cálculos redundantes.
Árvores
Estruturas de dados hierárquicas usadas para armazenar e organizar dados, como árvores binárias, AVL e Trie, úteis para buscas e ordenação.
Disjoint-set (Union-find)
Estrutura de dados eficiente para manipular conjuntos disjuntos, usada principalmente em algoritmos de grafos, como Kruskal.
Grafos
Estruturas matemáticas formadas por vértices e arestas, representando relações entre elementos e usadas em redes, caminhos mínimos e fluxos.
KMP e String Hashing
Algoritmos para busca eficiente de padrões em strings; KMP usa prefixos para evitar comparações desnecessárias, enquanto hashing transforma strings em valores numéricos.
Teoria dos números
Ramo da matemática que estuda propriedades dos números inteiros, incluindo divisibilidade, primos, congruências e criptografia.
Análise Combinatória
Estudo de contagem e arranjo de elementos, abrangendo permutações, combinações e princípio da inclusão-exclusão.