Skip to content

Treinamento anual de programação competitiva para os participantes do AoCPC, organizado pela AoCPC Community, num período de aproximadamente 2 meses.

Notifications You must be signed in to change notification settings

aocpc-community/aocpc-training-camp-2024

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 

Repository files navigation

AOCPC TRAINING CAMP 2024 - ARCHIVE

Treinamento anual de programação competitiva para os participantes do AoCPC, organizado pela AoCPC Community, num período de aproximandamente 30 dias.

AoCPC é uma associação de programação competitiva em português Concurso Universitário Angolano de Programação onde apenas estudantes universitários utilizam habilidades de resolução de problemas com base em algoritmos, as equipa competem entre si e é composta por três estudantes da mesma universidade e um professor(treinador).

Annual competitive programming training for AoCPC participants, organized by the AoCPC Community, over a period of approximately 30 days.

AoCPC is a Portuguese-language competitive programming association, the Angolan University Programming Contest, where only university students use algorithm-based problem-solving skills. Teams compete against each other and consist of three students from the same university and one professor (coach).

Contents

  1. Lectures 2024 (Parte 2)
  2. Lectures 2024 (Parte 1)
  3. Lectures
  4. Lectures (2023)
  5. Contests
  6. Materiais de Apoio
  7. Quizzes ou Listas de Exercícios
  8. Junte-se à Communidade
  9. Para Ler
  10. Plataformas de Programação Competitiva
  11. Repositórios Diversos
  12. Estratégias
  13. Terminologias importantes
  14. Dicas e Problemas Frequentes
  15. FAQ

Lectures 2024 (Parte 2)

# Topic Link
00 C++ STL, Bruteforce e Backtracking https://youtu.be/E5FlE3o7aNs
01 Pilhas Monotónicas e Pesquisa Binária na Resposta https://youtu.be/upebuSQF1rw
02 Manipulação Bit a Bit (Bitwise Manipulation), Truques e Técnicas em Matrizes https://youtu.be/-XoeqOOMxoU
03 Algoritmos de Ordenação e Fórmulas Matemáticas (Clássicas) https://youtu.be/ijeIPfOfHNw
04 Algoritmos de Grafos e Disjoint Sets https://youtu.be/gv9xUsJvVso
05 Árvores de Segmentos https://youtu.be/QF2S9nHlS7o
06 Resolução de Problemas de Programação Dinâmica https://youtu.be/GhFcAXecjPM

Lectures 2024 (Parte 1)

# Topic Link
00 Uma Viagem pelo mundo dos Concursos de Programação https://youtu.be/r3C1Qv6BZl8
01 Complexidade de Algoritmos (Análise Assintótica) https://youtu.be/TVkhWvClnA0
02 Pesquisa Binária + Operações e Consultas em Arrays https://youtu.be/KXsj4bWNrCc
03 Matemática https://youtu.be/RzPjwv9lFHA
04 Greedy vs Programação Dinâmica https://youtu.be/-NEyxkz3Uvs
05 Grafos https://youtu.be/jg4R9RoQv6Y
06 Resolução de Problemas Diversos Indisponível 2024

Lectures (2023)

# Topic Link
00 Concursos de Programação https://youtu.be/xQ4PA2a_vvU
01 Complexidade de Algoritmos https://youtu.be/iB6ufBGfiVo
03 Ordenação, Busca Binária e Aplicações https://youtu.be/kBlSqEdyFIM
04 Operações em Arrays (Estáticos) https://youtu.be/vTvHSGbZ9O8
04 (Resolução de Exercícios) Operações em Arrays https://youtu.be/Y0YDkhjb5_4
05 Teoria dos Números https://youtu.be/0IoxQkYQdVM
06 Greedy https://youtu.be/6ePTnxNZbO0
07 Programação Dinâmica https://youtu.be/vlHAt7e3QI0
08 Grafos https://youtu.be/2182WzIE_AI
https://www.youtube.com/watch?v=5cyz8Qyh1wg
https://www.youtube.com/watch?v=fK82QhT8_Hk
https://www.youtube.com/watch?v=bdrkpgGRHkA
09 Resolução de Problemas Diversos

Contests de Treinos

Junte-se 1º ao grupo do VJUDGE para ter acesso aos contests: https://vjudge.net/group/aocpc_tc24

  1. Contests da nossa região, criado pelo Problem Setter Moamen Ahmed : https://codeforces.com/group/Rilx5irOux/blog

Materiais de Apoio

Organizado por Edição, também contém os problemsets dos concursos passados. https://mega.nz/folder/jTp2mLqR#QEzN5ZYgD0R6Zer7O_4OAQ

Quizzes

Quiz conceitual sobre Complexidade de Algoritmos: https://forms.office.com/r/77dPDhw3Av

Junte-se à Communidade

  1. WhatsApp: https://chat.whatsapp.com/Dlr8483llslCeqYZUgx30J
  2. Telegram: https://t.me/+rN4SZheQgiw2Yjk0

Referência em Português

https://www.dcc.fc.up.pt/~pribeiro/aulas/daa2223/apoio.html

ATENÇÃO: Os problemas não estão organizados em ordem crescente de dificuldades. Portanto, devem ler todos os problemas, pois alguns poderão ser mais simples do que os outros!

Podem visitar os links que se seguem para verem algumas dicas de como fazer leitura e escrita rápida nas linguagens de programação permitidas no concurso:

  1. https://www.dcc.fc.up.pt/~pribeiro/aulas/daa2223/praticas/fastio.html
  2. https://www.geeksforgeeks.org/fast-i-o-for-competitive-programming-in-python/

Suporte para C++: https://www.learncpp.com/

Estratégias

  1. Estratégias para Concursos de Programação Competitiva (ICPC-style): https://www.dropbox.com/scl/fi/xryrmrnt0ffpsqib7hve8/Estrategias-para-las-competiciones-ACM-ICPC.mp4?rlkey=hr3f7bwmjg46lz50vpspf5atu&st=zkh9ox5c&dl=0

Plataformas de Programação Competitiva

  1. CodeForces: https://codeforces.com/
  2. AtCoder: https://atcoder.jp/
  3. CodeChef: https://www.codechef.com/
  4. Hacker Earth: https://www.hackerearth.com/practice/
  5. Hacker Rank: https://www.hackerrank.com/dashboard
  6. Kenkoooo (Repositório do AtCoder): https://kenkoooo.com/atcoder/#/table/
  7. CSES Problem Set: https://cses.fi/problemset/
  8. OJ (IOI Problems): https://oj.uz/problems

Repositórios Diversos

  1. CP Algorithms: https://cp-algorithms.com/index.html
  2. Guia USACO: https://usaco.guide/

Artigos Importantes

  1. Por que estudar Programação Competitiva?: https://medium.com/@osvaldozamba/por-que-estudar-programa%C3%A7%C3%A3o-competitiva-7a2ccadb30aa
  2. A Importância da Programação Competitiva em Angola: https://alfredomartins-codetyper.medium.com/a-importancia-da-programacao-competitiva-em-angola-dd92fc3ccc38
  3. Onde estão os próximos campeões do AOCPC?: https://medium.com/@patrickdaniel016/onde-est%C3%A3o-os-pr%C3%B3ximos-campe%C3%B5es-do-aocpc-75ec9e338f24

Terminologias importantes

Abreviação Significado
CP Competitive Programming (Programação Competitiva)
TLE Time Limited Exceeded (Tempo Limite Excedido)
WA Wrong Answer (Resposta Errada)
RE Runtime Error (Erro do Tempo de Execussão)

FAQ

  • Quais Linguagens de Programação são usadas?
    • C/C++, JAVA e Python.
  • É imperial que saibamos as 4 linguagens de programação (C++, C, Java, Python), ou só precisamos saber uma delas e resolver todos os exercícios que nos for colocado com essa única linguagem de programação?
    • Não é, mas é recomendado saber de tudo um pouco. Existem situações em que uma das linguagens facilita mais a vida. Por exemplo, … Hoje vimos que as STLs em C++ ajudam muito quando o assunto é estrutura de dados. E alguns algoritmos como o lower_bound.
  • E a questão do tempo de execução de programas não será avaliada também Eu li que Java e Python são linguagem que precisam de mais tempo de execução comparado ao C e C++.
    • Sim. C e C++ são mais rápidos! Existirão casos que serão avaliados, mas na maior parte não. Alguns deles facilitam com restrições que permite passar nas 4 linguagens, dependendo de sua implementação.
  • Estou com dificuldades em encontrar os exercícios e começar a resolver os problemas
    • Assim que aceder o torneio, os problemas estarão no lado esquerdo. Pode selecionar o problema desejado e enviar a solução clicando em “submeter”. Exemplo prático no seguinte tutorial: link do tutorial
  • Onde posso encontrar os contests?
  • Onde podemos encontrar as aulas do ano passado?
  • O que eles querem dizer com ler "t" casos de testes?
      int t;
      cin >> t;
      while(t--) {
          // Tua solução...
      }
    
  • Existe alguma ferramenta para desenhar grafos?
    • Sim. Considere: !pip install networkx matplotlib.

Dicas e Problemas Frequentes

  • O meu código parece ter uma complexidade aceitável, mas estou a receber TLE.

    • Se estiver passando arrays em funções, certifique-se de que a passagem é por referência e não por valor. Quando a passagem é por valor, uma cópia do array é enviada, o que pode levar O(n) no caso de array unidimensional, e isto pode afetar muito a sua solução. Se achou que a complexidade era, por exemplo, O(n), com esta cópia acabará sendo O(n^2). Tome nota!
    • Certifique-se sempre a complexidade das estruturas de dados que estiver usando. Por exemplo, uma remoção de um valor em uma "unordered_set" leva O(n) no pior caso, enquanto que em uma "map" ou "set" será O(log n). Isto acontece porque uma map é construído em torno de árvores. Esta nota pode te levar de TLE para AC sem rodeios.
  • Como escolher a estrutura de dados ideal quando temos mais de uma opção?

    • Algumas estruturas de dados possuem um "fator constante" maior do que outras. Por exemplo, as Fenwick Trees são mais rápidas que as Segment Trees, embora as Segment Trees sejam mais abrangentes em termos de aplicabilidade. Portanto, sempre que for indiferente usar uma das duas, escolha a Fenwick Tree. Teoricamente, ambas permitem atualizações e consultas genéricas em O(log n).
  • Meu código parece correto, todos os testes de exemplo passam, mas estou recebendo WA.

    • Verifique a capacidade do tipo de dados da variável que está usando. Por exemplo, em programas que pedem a soma de elementos que podem chegar a 10^9, é provável que a variável que armazena a soma estoure. Nesse caso, é necessário mudar de "int" para "long long". Se o participante não fizer essa alteração, será impossível passar na questão, mesmo que apenas um caso de teste falhe.

Créditos

  1. Autor: AOCPC Community
  2. Organizações: ICPC > ACPC > AoCPC
  3. Suportes: #####
  4. Local e Data: Luanda July 2024

"Problem solving is a lifestyle".

  1. Facebook: https://www.facebook.com/AngolaCPC
  2. GitHub: https://github.com/AOCP-Community/AOCPC_TRAINING_CAMP_2024
  3. WhatsApp: https://chat.whatsapp.com/Dlr8483llslCeqYZUgx30J
  4. Telegram: https://t.me/+rN4SZheQgiw2Yjk0
  5. YouTube: https://www.youtube.com/@aocpc_community

Back to the top

About

Treinamento anual de programação competitiva para os participantes do AoCPC, organizado pela AoCPC Community, num período de aproximadamente 2 meses.

Topics

Resources

Stars

Watchers

Forks