Skip to content

Curso de Algoritmos e Estruturas de Dados em C++ para programação competitiva!

Notifications You must be signed in to change notification settings

Polibits/Algorithms-and-Data-Structures-Course

Repository files navigation

Algorithms-and-Data-Structures-Course

Seja bem-vindo ao curso de Algoritmos e Estruturas de Dados em C++! Aqui, vamos aprender o essencial dessa matéria para programação competitiva. Cada módulo conta com os seguintes componentes:

  • Caderno: resumo da matéria
  • Problemas de sala: problemas para aprendizado
  • Problemas para casa: problemas para treino Além disso, temos aqui um dicionário de algoritmos, com o resumo dos principais algoritmos para se usar no dia da competição.

discord: https://discord.gg/arezHqz3 zap: https://chat.whatsapp.com/CrzfJf3o8CcEDsEN9R6Cqz

Autores:

  • Henrique Eduardo: @henriqueedu2001
  • Juliana Mitie: @julianamitie

"Buscar e aprender, na realidade, não são mais do que recordar" — Platão

SUMÁRIO DE CONTEÚDOS

Módulo I - Introdução

Básico do mundo de programação competitiva: o que é? quais as principais competições. Como se preparar?

  1. Mundo da Programação Competitiva
    • O que é Programação Competitiva?
    • Principais Competições
      • Maratona de Programação ICPC
      • IEEExtreme
      • Facebook Hackercup
      • Google Code Jam
  2. Como se preparar?
    • Linguagens de Programação
    • IDE's e Editores
    • Compilação e Execução
    • Judges: Codeforces, Atcoder, Codechef etc.
    • Contests

Módulo II - Básico de C++

Como resolver problemas de programação; sintaxe da linguagem C++, principais tipos de variáveis e estruturas de dados

  1. Raciocínio Algorítmico
    • Modelagem
    • Conceito de Algoritmo
  2. Variáveis
    • Conceito de variável
    • Principais variáveis: int, float, double, char e string
  3. Estruturas
    • Estruturas condicionais: if/else e switch
    • Estruturas de Repetição: laços while, do while e for
    • Funções e métodos
  4. Vetores e Matrizes
    • Vetores
    • Matrizes
  5. Atalhos
    • Macros
    • Typedef
    • Template

Módulo III - Análise de Complexidade

Como comparar eficiência de algoritmos; notação Big O; algoritmos iterativos e recursivos

  1. Algoritmos
  2. Complexidade
    • Como comparar eficiência
    • Notação Grande O (Big O notation)
    • Otimização
  3. Algoritmos Iterativos
  4. Algoritmos Recursivos

Módulo IV - Algoritmos Básicos

Algoritmos clássicos; busca linear, busca binária, ordenação, gulosos, backtracking e two pointers

  1. Algoritmos de Busca
    • Busca Linear
    • Busca Binária
  2. Algoritmos de Ordenação
    • Bubble Sort
    • Selection Sort
    • Quick Sort
    • Merge Sort
  3. Backtracking
  4. Algoritmos Gulosos
  5. Two Pointers

Módulo V - Estruturas de Dados

Estruturas de dados mais complexas; biblioteca STL e algoritmos

  1. Biblioteca STL
  2. Vectors
  3. Sets
  4. Maps
  5. Iterators
  6. Pilhas (Stacks)
  7. Filas (Queries)
  8. Listas Encadeadas (Linked Lists)

Módulo VI - Árvores e Grafos

Algoritmos sobre árvores e grafos

  1. Árvores
  2. Algoritmos de Busca em Grafos
    • DFS
    • BFS
    • A*
  3. Caminhos Mais Curtos
    • Bellman-Ford
    • Dijkstra
    • Floyd-Warshall
  4. Topological Sorting
  5. Programação Dinâmica

Módulo VII - Tópicos Avançados

algoritmos especiais; problemas matemáticos clássicos; estudos em geometria

  1. Matemática
  2. Geometria
  3. Algoritmos

Releases

No releases published

Packages

No packages published

Languages