Skip to content

Este repositório é uma coleção pessoal de algoritmos, estruturas de dados e técnicas de programação, organizados por categoria. O principal objetivo é servir como um material de estudo e consulta rápida para a prática de programação competitiva e a resolução de problemas complexos.

Notifications You must be signed in to change notification settings

bernardosluz/Competitive-Programming-Studies

Repository files navigation

CompetitiveProgrammingStudies

📖 Sobre o Repositório

Este repositório é uma coleção pessoal de algoritmos, estruturas de dados e técnicas de programação, organizados por categoria. O principal objetivo é servir como um material de estudo e consulta rápida para a prática de programação competitiva e a resolução de problemas complexos.

Cada pasta contém implementações de referência sobre um tópico específico, abrangendo desde conceitos fundamentais até algoritmos mais avançados.

🗂️ Estrutura das Pastas

O conteúdo está organizado da seguinte forma:

  • Algoritmos Dinamicos: Soluções que utilizam a técnica de Programação Dinâmica (PD) para resolver problemas de otimização.
  • Algoritmos Gulosos: Implementações de algoritmos gulosos (Greedy), que fazem escolhas localmente ótimas na esperança de encontrar uma solução global ótima.
  • Arquivos: Exemplos de código para manipulação, leitura e escrita de arquivos.
  • Bibliotecas C++: Funções utilitárias, macros e includes (#include) frequentemente usados em competições.
  • Combinatoria: Algoritmos relacionados à análise combinatória, como permutações, combinações e outros.
  • Competitive Programming 4: Códigos e anotações baseados nos problemas e conceitos do livro "Competitive Programming 4".
  • Diminuir-Conquistar: Algoritmos que seguem a abordagem de "Diminuir para Conquistar", reduzindo o tamanho do problema a cada passo.
  • Dividir-Conquistar: Implementações da técnica "Dividir para Conquistar", como Merge Sort e Closest-Pair.
  • Entradas Saidas e Prints: Templates e códigos otimizados para leitura (input) e escrita (output) de dados.
  • Estruturas de Dados Sem Lib: Implementações de estruturas de dados do zero, sem o uso de bibliotecas padrão.
  • Grafos: Um conjunto de algoritmos clássicos para grafos, incluindo buscas (BFS, DFS), caminhos mínimos (Dijkstra, Bellman-Ford) e árvores geradoras mínimas (Kruskal, Prim).
  • Ordenacao: Diferentes algoritmos de ordenação (Sorting), como Bubble Sort, Merge Sort, Quick Sort, etc.
  • Poligonos e Geometria: Algoritmos de geometria computacional para lidar com pontos, retas e polígonos.
  • Strings: Algoritmos para manipulação e busca em strings.
  • Teoria dos Numeros: Funções e algoritmos relacionados à Teoria dos Números, como MDC, teste de primalidade, e exponenciação modular.
  • Union Find: Implementação da estrutura de dados Union-Find (ou Disjoint Set Union - DSU), útil para problemas de conectividade.

🚀 Como Utilizar

Os códigos neste repositório são destinados a fins educacionais. Sinta-se à vontade para navegar pelas pastas, estudar as implementações e usá-las como referência para resolver seus próprios problemas.

About

Este repositório é uma coleção pessoal de algoritmos, estruturas de dados e técnicas de programação, organizados por categoria. O principal objetivo é servir como um material de estudo e consulta rápida para a prática de programação competitiva e a resolução de problemas complexos.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages