Implementações de estruturas de dados
As linguagens que utilizamos em concursos (nomeadamente C++ e Java) incluem implementações das estruturas faladas nos últimos artigos sobre estruturas de dados nas suas bibliotecas padrão. A grande vantagem disto é evitarmos ter que decorar ou saber muitos detalhes sobre algumas das estruturas de dados e podemos assim concentrar-nos no problema a resolver.
Implementações para C++
A linguagem C++ inclui uma poderosa biblioteca chamada STL, ou Standard Template Library. Nesta biblioteca podem encontrar inúmeras estruturas de dados e funções úteis. Uma boa forma de aprenderem os mais úteis é com o seguinte artigo:
Artigo: Uso da STL em concursos
Artigo do TopCoder sobre os usos da STL.
Este artigo tem uma segunda parte com usos mais avançados, mas inclui alguns tópicos que são mais avançados, por isso recomendamos que o guardem para um pouco mais tarde (depois de aprenderem grafos pelo menos).
Se quiserem ver a totalidade das funções que a STL contém, vejam a documentação da STL para C++ que vos é fornecida durante as provas das ONI e IOI:
Implementações para Java
Java inclui uma gama muito semelhante de estruturas de dados e funções em relação às disponíveis em C++. A lista de estruturas disponíveis em Java pode ser consultada na seguinte documentação:
Aplicação
Se acham que já dominam as estruturas de dados mais simples e a sua implementação, têm aqui um problema opcional de dificuldade um pouco alta, mas que podem tentar resolver. Caso não consigam, passem-no à frente e voltem depois de treinarem e verem outros conceitos (voltar atrás é sempre uma boa maneira de ver o nosso progresso!).
*Problema 1: Binary search tree
Problema do Kattis, bst - Binary search tree