Si tengo un año para ser realmente bueno en programación algorítmica y todavía no he probado suerte en programación competitiva, ¿cuál debería ser mi enfoque?

En primer lugar, y lo más importante: practicar. Piensa en soluciones para todo cada vez. No tiene que estar en su computadora, programando. Todos los algoritmos lo harán muy bien. Así: cuando intercambiaban cartas, ¿cómo comparaban su mazo y el de sus amigos para determinar la mejor manera para que ambos intercambiaran? ¿Cómo puedes definir cuántos intercambios puedes hacer para hacer el máximo y aún así no recibir ninguna carta repetida?
Use bases de datos de problemas y jueces en línea como este sitio, UVa Online Judge, que tiene cientos de problemas relacionados con algoritmos generales. Y no necesita ser un programador experto para resolver ninguno de ellos. Lo que necesitas es una buena habilidad con la lógica y las matemáticas. Allí, puede encontrar problemas desde los más simples hasta los más desafiantes. La mayoría de ellos provienen de maratones de programación.
Luego, puede implementarlos en C, C ++, Java o Pascal y enviarlos al juez en línea. Si tiene un buen algoritmo, será aceptado. De lo contrario, el juez dirá que su algoritmo dio la respuesta incorrecta al problema, o tomó demasiado tiempo resolverlo.
Leer sobre algoritmos ayuda, pero no pierdas demasiado tiempo en ello … Leer no ayudará tanto como tratar de resolver los problemas por ti mismo. Tal vez puedas leer el problema, tratar de encontrar una solución para ti, comparar con la solución propuesta por la fuente y ver qué te perdiste. No intentes memorizarlos. Si tiene el concepto bien aprendido, puede implementarlo en cualquier lugar. La comprensión es la parte más difícil para la mayoría de ellos.
Consulte el libro “Lógica de introducción y conjuntos para informáticos” de Nimal Nissanke (Addison Wesley).

Registrarse en Topcoder. Una vez que se registre, enviarán un correo electrónico (principalmente cada quince días) junto con el enlace para registrarse en los concursos. La mejor parte es que puedes elegir el tipo de concursos en los que te gustaría participar, por ejemplo. atrapando concurso de errores, algorítmico, etc.

Ahora para perfeccionar sus habilidades de algoritmo, sugeriría el siguiente libro

Estructuras de datos y algoritmos simplificados: estructura de datos y acertijos algorítmicos, segunda edición –

Una vez que comience a leer el libro, intente e implemente los algoritmos usando C ++.

Una vez que llegue a este punto, sabrá qué hacer a continuación y ya se habría convertido en un mejor.

Algunas referencias más:
¿Cuáles son algunos buenos algoritmos y libros de rompecabezas de estructura de datos, es decir, hay libros similares al libro de rompecabezas de algoritmos de Nanay Levitin?
Además de la Inteligencia Colectiva de Programación de O’Reilly, ¿qué es un buen libro de algoritmos con ejemplos en Python?

Buena suerte