Escrito por Arthur Lobo
Estudar para OBI pode ser desafiador se você não possui nenhum direcionamento. Por isso preparamos esse roteiro de estudos! Nele você vai saber uma ordem de conteúdos para aprender e por quais sites você deve estudar para ganhar uma medalha na OBI.
Em Informática, a prática é muito importante, então recomendamos que faça muitos problemas, especialmente da OBI, que você pode encontrar no site NepsAcademy ou na aba Pratique do site da OBI. O NOIC possui as soluções de várias OBI antigas na aba Comentário NOIC. Confira também a página de informática do NOIC, com todos nossos materiais.
Não há necessidade de ver todas as aulas de um nível antes de ir atrás de mais exercícios.
Separamos o roteiro em 5 níveis, sendo que você deve terminar completamente os conteúdos de um nível para passar para o próximo. Mas você não precisa ser um expert em todos eles logo de cara - enquanto você for fazendo mais exercícios e lendo soluções, você vai refinando seus conhecimentos e adquirindo mais prática.
Vale ressaltar que esses são os conteúdos que podem cair da terceira fase dos níveis, não na primeira fase. Você não precisa saber todos eles para ganhar uma medalha nesse nível, muito menos para passar para a segunda fase. A nota de corte para passar da primeira para a segunda fase geralmente é um pouco menos que metade da prova; e geralmente saber apenas programação básica e o suficiente para fazer metade da prova.
Programação Básica
Nesse nível, recomendamos que você faça os problemas indicados dentro de cada aula, os problemas da primeira fase da Programação Nível Júnior e alguns da Segunda fase Nível Júnior.
Essas são as aulas que você precisa ver nesse nível:
Programação Nível Júnior
Para começar esse nível, você já deve ter visto as aulas dos níveis anteriores.
Nesse nível, recomendamos que você faça os problemas indicados nas aulas, os problemas da segunda e terceira fase da OBI Programação Nível Júnior e comece a explorar o site Beecrowd e NepsAcademy.
Beecrowd (antigo URI): Possui diversos problemas em português divididos pelos seus tópicos e cada um tem um nível de dificuldade. Nessa página você pode escolher um assunto e fazer problemas seguindo o nível de dificuldade. Indicamos fazer os tópicos Ad-Hoc (problemas sem um tópico específico), Estruturas e Bibliotecas, e Grafos. Lembrando que existem diversos problemas de assuntos que você ainda não viu, então não passe muito tempo preso em um deles.
NepsAcademy: Juiz brasileiro que possui diversos problemas, desde problemas da OBI, até a seletiva. Além de possuir arquivo de outras provas, como maratonas de programação e Torneio Feminino de Informática. Na aba Assuntos, você pode escolher algum tópico específico que deseja praticar mais.
Essas são as aulas que você precisa ver nesse nível:
- Complexidade
- Busca binária
- Algoritmo Guloso
- Soma de Prefixo
- Uma Breve História de Grafos
- Busca em Grafos
- Two pointers
Programação Nível 1
Para começar esse nível, você já deve ter visto as aulas dos níveis anteriores.
Nesse nível, recomendamos que você faça os problemas indicados nas aulas, os problemas da OBI Programação Nível 1 e comece a explorar outros sites, como o USACO Guide, CSES e Codeforces.
Vale ressaltar que esses 3 sites estão em inglês - isso acontece porque a maioria dos sites e problemas de informática estão em inglês. Quando chegamos nesse nível, fica muito difícil estudar sem utilizar materiais desses sites, então recomendamos fortemente que você aprenda pelo menos o básico de inglês. Mesmo que não saiba muito bem hoje em dia, você pode começar traduzindo com o Google Tradutor e aos poucos ir melhorando nessa língua.
USACO Guide: O site é feito para auxiliar os americanos a se prepararem para a USACO (Olimpíada Americana de Computação), mas também pode ser útil para nós. Ele é dividido em seções de acordo com os níveis da Olimpíada deles. Recomendamos que faça os problemas das seções Bronze e Silver, mas não precisa fazer todos os problemas de um tópico para ir para o próximo, pois os problemas do site tendem a ser muito difíceis mesmo tendo assuntos mais simples.
CSES: Possui 300 problemas separados em 10 categorias. Uma boa parte dos problemas são considerados "clássicos", ou seja, são problemas conhecidos que muitas vezes são usados como base para criação de outros problemas. Recomendados que você faça os problemas dos seguintes tópicos: Introductory Problems, Sorting and Searching, Dynamic Programming, Graph Algorithms, Range Queries e Tree Algorithms. Dentro de cada tópico, os problemas estão em ordem crescente de dificuldade.
Codeforces: Esse site russo (que possui uma versão em inglês) é o maior de programação competitiva do mundo, com mais de 600 mil usuários. Ele possui diversos contests que acontecem semanalmente, geralmente das 11:35 até as 13:35 no horário de Brasília. Esses contests são provas que você pode fazer online e valem pontos dentro do site, o chamado rating, dependendo da sua performance dentro de um contest, você ganha ou perde rating, podendo assim competir com amigos para ver quem tem mais rating, ter objetivos de atingir tal rating e etc. Você pode conferir a classificação brasileira no Codeforces, um dia você pode estar no topo! Além disso, ele possui uma comunidade gigantesca que posta diversos blog sobre algoritmos e coisas relacionadas a informática. Aqui você encontra um blog explicando em detalhes várias funcionalidades do site.
Essas são as aulas que você precisa ver nesse nível:
- Menor Caminho
- Bitmask
- Introdução à Programação Dinâmica
- Problema da Mochila
- Introdução a Árvores
- Dijkstra Com Vértices Auxiliares
- Binary Lifting
- LCA (Menor Ancestral Comum)
- Soma Máxima em Intervalo
- Binary Indexed Tree (BIT)
- Union Find
- MST (Árvore Geradora Mínima)
- Congruência
- Teste de Primalidade
- Diâmetros e Centros
- Sparse Table
- Crivo de Erastótales
- Ordenação Topológica
- Maior Subsequencia Crescente (LIS)
Programação Nível 2
Para começar esse nível, você já deve ter visto as aulas dos níveis anteriores.
Nesse nível, além de acompanhar as aula do curso NOIC e fazer todos os problemas da OBI Programação Nível 2, você deve avançar ainda mais no USACO guide, fazendo também a seção Gold; e fazer os problemas da seção Addicional Problems do CSES, que possui diversos problemas mais difíceis e que ajudam muito na OBI. Além disso, vale a pena dar uma olhada no site AtCoder.
AtCoder: É um site japonês (que possui uma versão em inglês) que possui contests divididos em 3 categorias: ABC (AtCoder Beginner Contest), ARC (AtCoder Regular Contest) e AGC (AtCoder Grand Contest). Ele possui um sistema de Rating, que segue o modelo do Codeforces. Recomendamos que você comece fazendo os contests ABC e, depois que se sentir confiante, ARC, que geralmente ocorrem sábado e domingo de manhã. Se quiser fazer problemas soltos, escolher os problemas D e E dos ABC e A e B dos ARC é uma boa ideia. Existe um site que mostra a lista dos problemas de cada contest do AtCoder: AtCoder Problems.
Essas são as aulas que você precisa ver para esse nível:
- Compressão de Coordenadas
- Segment Tree
- DP em Intervalo
- DP em árvore
- Pontos e Vetores
- Produto Vetorial e Produto Escalar
- Exponenciação Rápida
- Fecho Convexo
- Princípio da Inclusão e Exclusão
- Segment Tree com Lazy Propagation
- Segment Tree++
- Busca Binária em Estruturas
- Line Sweep
Seletiva IOI e OII
Finalmente chegamos no nível mais avançado! Para esse nível, você deve se preparar muito, principalmente resolvendo os problemas das seletivas anteriores, problemas de outras olimpíadas mundo afora (chamadas de OI, que significa Olympiads in Informatics) e avançando para o nível platina do USACO guide. Vale mencionar também que, em boa parte dos problemas das Seletiva IOI mais recentes, a parte mais difícil dos problemas não é o conteúdo dele, e sim ter uma "sacada" que o resolve, então a pratica aqui é mais importante do que nunca.
Seletivas anteriores: Você pode encontrar as seletivas de 2014 até 2018 no NepsAcademy, basta pesquisar por Seletiva IOI. Para as provas de 2019 até 2021, você as encontra no grupo Brazil IOI Selection Contests. O formato da seletiva é de 4 dias de provas, variando de 1 a 3 problems e 2h30min até 5 horas. Vale ressaltar que alguns problemas não foram adicionados nos arquivos de Seletivas anteriores.
Olimpíadas mundo afora: A maioria dos problemas de Olimpíadas de outros países e internacionais estão no site OJ.UZ. Outras duas ferramentas muito úteis são a OI checklist, na qual você consegue ver vários problemas de OI's e marcá-los como feito e esse github, que possui soluções de vários dos problemas de você precisa.
Essas são as aulas que você precisa ver para esse nível:
- Guia de Problemas Interativos
- BFS 0/1
- Min/Max Queue
- Merge Sort Tree
- Problemas Diversos de Geometria Computacional
Existem muitos conteúdos de Seletiva que o Curso NOIC ainda não cobre, mas esses conteúdos serão adicionados aqui à medida que forem adicionados ao Curso NOIC de Informática.
Nós da equipe NOIC de informática te desejamos muito sucesso na sua jornada de Olimpíadas de Informática!