Que estruturas de dados básicos e algoritmos se deve aprender antes de iniciar uma programação competitiva?
You're com sorte. Existem muitos recursos.
Eu sugeriria começar com o portal de treinamento da USACO (Página sobre Delos). It'é uma compilação de centenas de problemas e tutoriais que são destinados a ajudar as pessoas a treinar para a USACO. Mas, pode-se usá-lo para treinar essencialmente para qualquer competição de programação. Pode começar como bastante básico para você, mas assim que você entrar na parte final do Capítulo 1 e no Capítulo 2, você irá cobrir alguns conceitos da teoria dos gráficos, assim como da Programação Dinâmica. It'é provavelmente um dos melhores recursos para começar a treinar para competições.
Outro conjunto de tutoriais que eu sugiro são os tutoriais do TopCoder (Algorithm Tutorials). Eu acho que estes tutoriais são melhores do que os tutoriais que a USACO fornece. Entretanto, os problemas que os tutoriais do TopCoder fornecem são't tão bons quanto os problemas da USACO.
I got more in-depth here: Como um iniciante pode aprender programação? A primeira resposta é minha.
No que diz respeito a algoritmos e técnicas específicas, seria difícil fornecer uma lista completa de tudo. Um dos primeiros tutoriais no USACO Gateway fornece uma pequena lista de tipos de problemas que você provavelmente verá em uma competição de programação, mas ele não't realmente dá uma lista de algoritmos.
alguns algoritmos/técnicas básicas que todo programador de sucesso competitivo tem em seu arsenal são:
1. Dijkstra's Algoritmo (Caminho mais Curto)
4. Floyd-Warshall's Algoritmo (Caminho mais Curto)
5. Algoritmo Bellman-Ford (Caminho mais Curto)
6. Algoritmos Gananciosos
7. Programação Dinâmica (incluindo problemas de Mochila)
8. Recurssão
9. Árvores de Espaçamento Mínimo
10. Pesquisa Binária e Linear
11. Algumas combinatórias básicas e teoria dos números.
You'd também precisa de algumas estruturas de dados:
1. Pilha
2. Fila
3. Hash Table
4. Heap
5. Bag (talvez. Eu tenho' não vi isto usado em competições de programação frequentemente)
Again, estes são os princípios básicos. Se você quer conhecer conceitos mais avançados, sinta-se à vontade para ler coisas online ou livros. Eu sugiro Introdução aos Algoritmos por Cormen e Algoritmos por Sedgewick. Introdução aos Algoritmos cobre muito, mas é muito mais orientado à matemática. Algoritmos por Sedgewick é mais prático pois fornece código Java enquanto Introdução aos Algoritmos fornece pseudocódigo.
Artigos semelhantes
- Para um bom desenvolvedor Android, eu preciso aprender estruturas de dados e algoritmos também?
- Como é diferente a programação competitiva da programação da vida real?
- Quais são os 10 algoritmos que se deve saber para resolver a maioria dos problemas de algoritmos?
- Quero iniciar um aplicativo Android. Quais são os procedimentos legais que devo seguir antes de iniciar a minha empresa?