Yo diría que ” resolver ” en sí mismo puede acelerar su rendimiento, pero en caso de que necesite obtener un curso o leer un libro:
- CLRS: Introducción a los algoritmos es imprescindible: Amazon Link
- Cursos MIT OCW: 6.006 es una clase de algoritmos introductorios: Introducción a los algoritmos; hay una colección de videos de la clase en YouTube del otoño de 2011: MIT 6.006 Introducción a los algoritmos, otoño de 2011
- 6.046 es una clase de algoritmos teóricos más avanzada: Diseño y Análisis de Algoritmos. Desafortunadamente, los videos que están disponibles para esta clase son un poco antiguos: MIT 6.046J / 18.410J Introducción a los algoritmos (SMA 5503)
- Si desea buscar algoritmos específicos o estructuras de datos, las páginas de Wikipedia para los más comunes: BFS, DFS, Dijkstra, BBST, búsqueda binaria, tablas hash … etc. generalmente son muy accesibles y bastante precisos: Categoría: Algoritmos y Categoría: Estructuras de datos
Específicamente para la programación competitiva, sugeriría mirar:
- TopCoder ofrece muchos tutoriales sobre algoritmos (especialmente implementación): Tutoriales de algoritmos
- ACM tiene un repositorio completo de problemas de práctica para su competencia de programación: Archivo ACM-ICPC
Además de estos, hay un par de libros más que puede preferir.
- La programación competitiva de Steven Halim, que tiene una descripción ( no muy matemática ) de los principales contenidos en la programación competitiva y al final de cada capítulo, tiene una lista de problemas que utilizan esos temas. Creo que este es un excelente recurso para estudiantes de nivel principiante / intermedio que aún necesitan aprender muchos de los conceptos y desean encontrar problemas para practicarlos.
- ESTRUCTURA DE DATOS Y ALGORITMO por Narsimha Karumanchy este es un libro de nivel muy básico que le enseña todas las cosas relacionadas con DS desde cero .