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).
- Lectures 2024 (Parte 2)
- Lectures 2024 (Parte 1)
- Lectures
- Lectures (2023)
- Contests
- Materiais de Apoio
- Quizzes ou Listas de Exercícios
- Junte-se à Communidade
- Para Ler
- Plataformas de Programação Competitiva
- Repositórios Diversos
- Estratégias
- Terminologias importantes
- Dicas e Problemas Frequentes
- FAQ
# | 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 |
# | 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 |
# | 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 |
Junte-se 1º ao grupo do VJUDGE para ter acesso aos contests: https://vjudge.net/group/aocpc_tc24
- Contests da nossa região, criado pelo Problem Setter Moamen Ahmed : https://codeforces.com/group/Rilx5irOux/blog
Organizado por Edição, também contém os problemsets dos concursos passados. https://mega.nz/folder/jTp2mLqR#QEzN5ZYgD0R6Zer7O_4OAQ
Quiz conceitual sobre Complexidade de Algoritmos: https://forms.office.com/r/77dPDhw3Av
- WhatsApp: https://chat.whatsapp.com/Dlr8483llslCeqYZUgx30J
- Telegram: https://t.me/+rN4SZheQgiw2Yjk0
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:
- https://www.dcc.fc.up.pt/~pribeiro/aulas/daa2223/praticas/fastio.html
- https://www.geeksforgeeks.org/fast-i-o-for-competitive-programming-in-python/
Suporte para C++: https://www.learncpp.com/
- 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
- CodeForces: https://codeforces.com/
- AtCoder: https://atcoder.jp/
- CodeChef: https://www.codechef.com/
- Hacker Earth: https://www.hackerearth.com/practice/
- Hacker Rank: https://www.hackerrank.com/dashboard
- Kenkoooo (Repositório do AtCoder): https://kenkoooo.com/atcoder/#/table/
- CSES Problem Set: https://cses.fi/problemset/
- OJ (IOI Problems): https://oj.uz/problems
- CP Algorithms: https://cp-algorithms.com/index.html
- Guia USACO: https://usaco.guide/
- Por que estudar Programação Competitiva?: https://medium.com/@osvaldozamba/por-que-estudar-programa%C3%A7%C3%A3o-competitiva-7a2ccadb30aa
- A Importância da Programação Competitiva em Angola: https://alfredomartins-codetyper.medium.com/a-importancia-da-programacao-competitiva-em-angola-dd92fc3ccc38
- 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
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) |
- 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?
- No repositório que se encontra, mais especificamente na sessão Contests.
- Onde podemos encontrar as aulas do ano passado?
- No repositório que se encontra, mais especificamente na sessão Lectures (2023).
- 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
.
- Sim. Considere:
-
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.
- Autor:
AOCPC Community
- Organizações:
ICPC > ACPC > AoCPC
- Suportes:
#####
- Local e Data:
Luanda July 2024
"Problem solving is a lifestyle".