├── ALGORITIMOS.md ├── EXERCICIOS.md ├── README.md ├── dados ├── FILA.md ├── PILHA.md ├── README.md └── VECTOR.md └── grafos ├── BFS.cpp ├── DFS.cpp └── README.md /ALGORITIMOS.md: -------------------------------------------------------------------------------- 1 | # Algoritimos 2 | ## Grafos 3 | - Lista / Matriz de adjacência 4 | - https://www.youtube.com/watch?v=o_9flxMVyyQ 5 | 6 | ### DFS e BFS (Mais usado) 7 | - Usados para encontrar caminhos (melhor / maior / grupos) 8 | - https://www.youtube.com/watch?v=jYwonGls6RQ 9 | 10 | #### Busca em profundidade - DFS 11 | - Deph First Search 12 | - (Recursivo / melhor) 13 | - (https://www.youtube.com/watch?v=QLuzO37HyJI) 14 | - [DFS CODE](grafos/DFS.cpp) 15 | #### Busca em largura - BFS 16 | - Breadth First Search 17 | - (Fila / queue) 18 | - (https://www.youtube.com/watch?v=oDqjPvD54Ss) 19 | - [BFS CODE](grafos/BFS.cpp) 20 | 21 | ### Dijkstra (Bônus) 22 | - https://www.youtube.com/watch?v=ovkITlgyJ2s 23 | - https://www.youtube.com/watch?v=gpmM0p9feV4 24 | 25 | ### Backtracking 26 | - Cria combinação recursivamente 27 | - Usos: bruteforce, sudoku 28 | - https://www.youtube.com/watch?v=DKCbsiDBN6c 29 | 30 | ### DP - Programação Dinâmica 31 | - Recursivo / Avançado 32 | - Tem que ser adaptado para cada caso 33 | - O tempo de execução cai pra casa do caralho 34 | - https://www.youtube.com/watch?v=SJSRKnxu9Ig 35 | - https://www.youtube.com/watch?v=eLqKBivIxJI 36 | -------------------------------------------------------------------------------- /EXERCICIOS.md: -------------------------------------------------------------------------------- 1 | # Exercicios 2 | ## Level 1 3 | ( Pilha - Fila - Recursão - Backtrack ) 4 | [Street Parade](https://www.spoj.com/problems/STPAR/) 5 | [Expressões](https://br.spoj.com/problems/EXPRES11/) 6 | [MMASS](https://www.spoj.com/problems/MMASS/) 7 | [ACOES1MG](https://br.spoj.com/problems/ACOES1MG/) 8 | [Fibonacci, Quantas Chamadas?](https://www.urionlinejudge.com.br/judge/pt/problems/view/1029) 9 | [Meme Wars](http://codeforces.com/gym/101879/problem/J) 10 | [BNUMBERS](https://www.spoj.com/problems/BNUMBERS/) 11 | [Dreamoon and WiFi](https://codeforces.com/problemset/problem/476/B) 12 | [ASSALTMG](https://br.spoj.com/problems/ASSALTMG/) 13 | [JUNINA](https://br.spoj.com/problems/JUNINA/) 14 | [HISTOGRA](https://www.spoj.com/problems/HISTOGRA/) 15 | [BRCKTS2](https://www.spoj.com/problems/BRCKTS2/) 16 | [Torre](https://neps.academy/problem/45) 17 | [Planting Trees](https://open.kattis.com/problems/plantingtrees) 18 | 19 | ## Level 2 20 | ( Programação Dinâmica Básica - DP ) 21 | [Little thief Shi](https://codeforces.com/problemset/gymProblem/100733/D) 22 | [DOCE](https://br.spoj.com/problems/DOCE/) 23 | [Boredom](https://codeforces.com/problemset/problem/455/A) 24 | [TROCO13](https://br.spoj.com/problems/TROCO13/) 25 | [MOEDAS](https://br.spoj.com/problems/MOEDAS/) 26 | [DESCULPA](https://br.spoj.com/problems/DESCULPA/) 27 | [Cut Ribbon](https://codeforces.com/problemset/problem/189/A) 28 | [Critical Mass](https://onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=7&page=show_problem&problem=521) 29 | [Bits](https://neps.academy/problem/39) 30 | [Bar Codes](https://onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=19&page=show_problem&problem=1662) 31 | [Recibo de Compra](https://neps.academy/problem/367) 32 | [Distracted judges](https://www.spoj.com/problems/TAP2014J/) 33 | [Alien Invasion](https://szkopul.edu.pl/problemset/problem/jkW16zbAvZZ-iHvhESjGm9FS/site/?key=statement) 34 | [Quadrado](https://www.urionlinejudge.com.br/judge/pt/problems/view/2471) 35 | [Cable Cars](https://codeforces.com/group/R2SERIff4f/contest/213171/problem/B) 36 | 37 | ## Level 3 38 | ( Grafos Básicos ) 39 | [TROIA13](https://br.spoj.com/problems/TROIA13/) 40 | [Colorindo](https://br.spoj.com/problems/COLOR11/) 41 | [Setas](https://br.spoj.com/problems/SETA14/) 42 | [Passa Bolinha](https://www.urionlinejudge.com.br/judge/pt/problems/view/2465) 43 | [Pulo do Gato](https://neps.academy/problem/368) 44 | [ULTIMO](https://br.spoj.com/problems/ULTIMO/) 45 | [TARZAN12](http://br.spoj.com/problems/TARZAN12/) 46 | [IREVIR](http://br.spoj.com/problems/IREVIR/) 47 | [MAPA14](https://br.spoj.com/problems/MAPA14/) 48 | [Metrô](https://olimpiada.ic.unicamp.br/pratique/pu/2015/f1/metro/) 49 | [GINCAN11](https://br.spoj.com/problems/GINCAN11/) 50 | [Long Journey](https://csacademy.com/contest/beta-round-5/task/long_journey/) 51 | [MESA](https://br.spoj.com/problems/MESA/) 52 | [O Tabuleiro Esburacado](https://www.urionlinejudge.com.br/judge/pt/problems/view/2411) 53 | [ESCALO11](http://br.spoj.com/problems/ESCALO11/) 54 | [Fox and Names](http://codeforces.com/contest/510/problem/C) 55 | [BOMBA12](https://br.spoj.com/problems/BOMBA12/) 56 | [Invertendo Setas](https://www.urionlinejudge.com.br/judge/pt/problems/view/2576) 57 | [Arpa's Weak](http://codeforces.com/problemset/problem/741/B) 58 | 59 | ## Level 4 60 | ( Árvore ) 61 | [Cidades](https://olimpiada.ic.unicamp.br/pratique/p1/2017/f3/visita/) 62 | [Móbile](https://olimpiada.ic.unicamp.br/pratique/p2/2007/f1/mobile/) 63 | [Família Real](http://www.codcad.com/problem/175) 64 | [Dengue](https://br.spoj.com/problems/DENGUE/) 65 | [Desafio cartográfico](https://br.spoj.com/problems/CARTOG11/) 66 | [Time to live](https://codeforces.com/gym/100274) 67 | [Dividindo o império](https://olimpiada.ic.unicamp.br/pratique/p2/2017/f3/imperio/) 68 | [Intrepid climber](https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&category=658&page=show_problem&problem=4841) 69 | [Capitais](https://olimpiada.ic.unicamp.br/pratique/p1/2015/f2/capitais/) 70 | [Imposto Real](https://www.urionlinejudge.com.br/judge/pt/problems/view/2666) 71 | [Book of Evil](https://codeforces.com/problemset/problem/337/D) 72 | [Connecting Universities](https://codeforces.com/problemset/problem/700/B) 73 | [Opening Ceremony](https://ncpc14.kattis.com/problems/ceremony) 74 | [Janela](https://olimpiada.ic.unicamp.br/pratique/p2/2013/f2/janela/) 75 | 76 | ## Level 5 77 | ( Vetor de marcação - Somas Parciais ) 78 | [Notas](https://neps.academy/problem/495) 79 | [Tacos de Bilhar](https://neps.academy/problem/54) 80 | [Botas Trocadas](https://neps.academy/problem/19) 81 | [Quebra-cabeça](https://neps.academy/problem/70) 82 | [Fila](https://neps.academy/problem/67) 83 | [Banda](https://neps.academy/problem/560) 84 | [Pesca](https://neps.academy/problem/530) 85 | [Plantação](https://neps.academy/problem/507) 86 | [Kuriyama](https://codeforces.com/problemset/problem/433/B) 87 | [Quadradinho de 8](https://neps.academy/problem/508) 88 | [Troca](https://neps.academy/problem/365) 89 | [Segredo do cofre](https://neps.academy/problem/16) 90 | [The Two Routes](https://codeforces.com/problemset/problem/601/A) 91 | [Peça Perdida](https://br.spoj.com/problems/PECA7/) 92 | [Rodovia](https://neps.academy/problem/501) 93 | [Fita Colorida](https://neps.academy/problem/49) 94 | [Coral Perfeito](https://www.urionlinejudge.com.br/judge/pt/problems/view/1225) 95 | [Chuva](https://neps.academy/problem/58) 96 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Competitive Programming C++ 2 | Study notes for the "Olimpíada Brasileira de Informática" ( OBI 2020 ) 3 | Coloquem mais conteúdo se quiserem 4 | - [Estrutura de Dados](/dados/) 5 | - [Algoritimos](/ALGORITIMOS.md) 6 | - [Exercicios](/EXERCICIOS.md) 7 | 8 | # Estudos 9 | #### Melhor material para treino (da UNICAMP) 10 | As atividades estão em [EXERCICIOS](/EXERCICIOS.md) 11 | 12 | # Websites 13 | - https://olimpiada.ic.unicamp.br/pratique/ 14 | - https://urionlinejudge.com.br 15 | - https://neps.academy/dashboard ( melhor na minha opinião ) 16 | -------------------------------------------------------------------------------- /dados/FILA.md: -------------------------------------------------------------------------------- 1 | # FILA 2 | -------------------------------------------------------------------------------- /dados/PILHA.md: -------------------------------------------------------------------------------- 1 | # PILHA 2 | -------------------------------------------------------------------------------- /dados/README.md: -------------------------------------------------------------------------------- 1 | # Estrutura de dados 2 | `import ` 3 | 4 | - [Vetor](VECTOR.md) (Vector) 5 | - [Pilha](PILHA.md) (stack) 6 | - [Fila](FILA.md) (queue) 7 | 8 | -------------------------------------------------------------------------------- /dados/VECTOR.md: -------------------------------------------------------------------------------- 1 | # Vector 2 | Um array redimensionável com funções adicionais 3 | 4 | `include ` 5 | 6 | ```cpp 7 | // CRIAR 8 | vector VETOR; 9 | //com um tamanho predefinido 10 | vector VETOR[5]; 11 | ``` 12 | 13 | 14 | ```cpp 15 | // CRIAR COM UM VALOR PREDEFINIDO 16 | vector VETOR; 17 | // Define o vector com um tamanho de 10 todos como false 18 | VETOR.assign(10,false) 19 | ``` 20 | 21 | ## Funções 22 | 23 | ```cpp 24 | // ADD numbers on the end: 25 | VETOR.push_back(10); 26 | ``` 27 | 28 | ```cpp 29 | // GET the SIZE: 30 | VETOR.size(); 31 | ``` 32 | 33 | ```cpp 34 | // GET the first and lest elements: 35 | VETOR.front(); 36 | VETOR.back(); 37 | // GET another element: 38 | VETOR .at(4); 39 | ``` 40 | 41 | ```cpp 42 | // Verify if is EMPTY: 43 | VECTOR.empty() 44 | ``` 45 | 46 | ```cpp 47 | // DEFINE: 48 | VETOR[2]=34; 49 | ``` 50 | 51 | ```cpp 52 | // REMOVE the last and the first element: 53 | VETOR.pop_back(); 54 | VETOR.pop_front(); 55 | ``` 56 | 57 | ```cpp 58 | // Invert / change all data with another vector: 59 | VETOR.swap(VECTOR2); 60 | ``` 61 | 62 | ```cpp 63 | // ADD AND REMOVE (without interator) 64 | 65 | // Insert a element in another local 66 | // inserting at the 2 position (0+1): 67 | VETOR.insert( VETOR.begin() + 1 , 888 ); 68 | // inserting at the size - 1: 69 | VETOR.insert( VETOR.end() - 1 , 888 ); 70 | 71 | // Remove position (the last - 1): 72 | VETOR.erase(VETOR.end() - 1); 73 | ``` 74 | -------------------------------------------------------------------------------- /grafos/BFS.cpp: -------------------------------------------------------------------------------- 1 | static int num[1000]; 2 | /* A função GRAPHbfs() implementa o algoritmo de busca em largura. Ela visita todos os vértices do grafo G que estão ao alcance do vértice s e registra num vetor num[] a ordem em que os vértices são descobertos. Esta versão da função supõe que o grafo G é representado por listas de adjacência. (Código inspirado no programa 18.9 de Sedgewick.) */ 3 | void GRAPHbfs( Graph G, vertex s) 4 | { 5 | int cnt = 0; 6 | for (vertex v = 0; v < G->V; ++v) 7 | num[v] = -1; 8 | QUEUEinit( G->V); 9 | num[s] = cnt++; 10 | QUEUEput( s); 11 | 12 | while (!QUEUEempty( )) { 13 | vertex v = QUEUEget( ); 14 | for (link a = G->adj[v]; a != NULL; a = a->next) 15 | if (num[a->w] == -1) { 16 | num[a->w] = cnt++; 17 | QUEUEput( a->w); 18 | } 19 | } 20 | QUEUEfree( ); 21 | } 22 | -------------------------------------------------------------------------------- /grafos/DFS.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #define MAX 105 3 | 4 | using namespace std; 5 | 6 | vector g[MAX]; 7 | bool mark[MAX]; 8 | 9 | bool dfs(int A,int B,int color){ 10 | if(mark[A]) return false; 11 | mark[A]=true; 12 | 13 | if(A==dest){ 14 | /*code*/ 15 | return true; 16 | } 17 | 18 | for(auto p: castelos[A]){ 19 | if(dfs(p,B,color)){ 20 | /*code*/ 21 | return true; 22 | } 23 | } 24 | return false; 25 | 26 | } 27 | 28 | int main(){ 29 | int N,M,A,B; 30 | 31 | cin >> N >> M; 32 | 33 | for(int i=1;i> A >> B; 35 | g[A].push_back(B); 36 | g[B].push_back(A); 37 | } 38 | for(int i=0;i> A >> B >> C; 44 | dfs(A,B,C); 45 | } 46 | 47 | return 0; 48 | } 49 | -------------------------------------------------------------------------------- /grafos/README.md: -------------------------------------------------------------------------------- 1 | # Grafos 2 | Codigos de exemplos de grafos 3 | --------------------------------------------------------------------------------