Preparação

Para se tornar um campeão de programação é preciso passar por diversas etapas.

    1. Escolher a linguagem.
        • Dominar sintaxe e comandos básicos.
        • Dominar as funções mais usadas em competições.
    2. Noções de Complexidade de Algoritmos
        • Calcular complexidade de tempo e memória.
        • Estimativa de tempo.
    3. Dominar as estruturas de dados básicas.
        • Vetores, strings.
        • Pilha, fila.
    4. Dominar Entrada e Saída
        • Leitura dos diferentes tipos.
        • Saída formatada dos diferentes tipos.
    5. Ficar à vontade com Recursão e Backtracking.
        • Saber enumerar permutações, combinações e arranjos.
    6. Aprender Grafos.
        • Estruturas para representá-los.
        • Algoritmos de busca: BFS, DFS.
        • Árvore Geradora Mínima.
        • Caminhos mínimos.
    7. Aprender Programação Dinâmica.
        • Entender a idéia.
        • Conhecer os problemas clássico.

Com isso já é possível alcançar resultados muito bons nas competições de programação tradicionais. Antes de partir para Geometria Computacional e problemas Matemáticas é melhor tentar se aperfeiçoar em Programação Dinâmica e principalmente em Grafos.

Veja também o texto sobre como começar a se preparar da Regional Mid-Central dos EUA.