Libros y guías
Una base teórica sólida es lo que diferencia a un buen programador de uno excelente. Esta página recopila los libros de referencia y el material online que te ayudarán a construir y consolidar tus conocimientos en algoritmos, estructuras de datos y estrategias de resolución de problemas.
Guías y cursos
USACO Guide: Diseñada para las olimpiadas en EEUU, posiblemente sea la guía de aprendizaje más exhaustiva y mejor estructurada que existe. Te lleva de la mano desde los conceptos más básicos (Bronce) hasta el nivel de la élite mundial (Platino) con explicaciones teóricas, tutoriales y listas de problemas cuidadosamente seleccionados para cada tema.
cp-algorithms.com (La “Wikipedia” de los algoritmos): Es una traducción de la página rusa e-maxx.ru, la web de referencia por excelencia para consultar descripciones de algoritmos y estructuras de datos. Sus explicaciones son claras, incluyen implementaciones de código limpias y enlaces a problemas prácticos para aplicar lo aprendido.
Libros de referencia
Libros de programación competitiva y algoritmos
Estos son los textos que forman el núcleo del conocimiento en programación competitiva. Son lecturas densas pero increíblemente valiosas.
Competitive Programming (La “enciclopedia”)
- Autores: Steven Halim, Felix Halim
- Por qué leerlo: es considerado el libro de referencia más completo sobre el tema. Cubre una cantidad inmensa de algoritmos, estructuras de datos y trucos específicos para la competición. Es un manual perfecto para consultar cuando quieres profundizar en un tema concreto.
Competitive Programmer’s Handbook (El mejor para empezar - PDF Gratuito)
- Autor: Antti Laaksonen
- Por qué leerlo: es la guía perfecta para iniciarse y progresar. Explica los conceptos de una manera muy clara y está diseñado para acompañar el famoso CSES Problemset. Es gratuito y accesible para todos los niveles.
Introduction to Algorithms (CLRS) (La “Biblia” de la algoritmia)
- Autores: Cormen, Leiserson, Rivest, Stein
- Por qué leerlo: es el libro de texto académico por excelencia. Aunque no se centra en la competición, proporciona el rigor matemático y las demostraciones formales de casi cualquier algoritmo o estructura de datos que puedas necesitar. Es la fuente definitiva para entender el porqué de las cosas.
- Autor: Steven S. Skiena
- Por qué leerlo: este libro destaca por su enfoque práctico. La primera mitad es un catálogo de problemas algorítmicos y la segunda es un impresionante catálogo de algoritmos (“The Hitchhiker’s Guide to Algorithms”) donde Skiena te cuenta, desde la experiencia, qué problemas resuelve cada uno y dónde encontrar las mejores implementaciones.
Computational Geometry in C (avanzado)
Computational Geometry Algorithms and Applications (avanzado)
Libros de apoyo y preparación para entrevistas
La programación competitiva es el mejor entrenamiento para las entrevistas técnicas. Estos libros se especializan en ese tipo de problemas.
- Autora: Gayle Laakmann McDowell
- Por qué leerlo: es el libro de referencia para prepararse las entrevistas de las grandes empresas tecnológicas. No solo cubre los problemas técnicos, sino que también ofrece consejos sobre el comportamiento, la negociación y el proceso de selección en general.
- Autor: Aditya Bhargava
- Por qué leerlo: si los libros densos te intimidan, este es tu punto de partida. Utiliza ilustraciones y ejemplos muy sencillos para explicar conceptos fundamentales. Es perfecto para construir una primera intuición sobre cómo funcionan los algoritmos.
Elements of Programming Interviews
- Autores: Adnan Aziz, Tsung-Hsien Lee, Amit Prakash
- Por qué leerlo: similar a “Cracking the Coding Interview”, pero a menudo considerado más denso y con problemas de mayor nivel. Es excelente para quienes ya tienen una base y quieren enfrentarse a retos más complejos, con un enfoque profundo en los patrones de resolución.
Catálogos de problemas
CSES Problemset: Una colección de problemas clásicos y “estándar” organizados por tema. Es el compañero perfecto del Competitive Programmer’s Handbook. Resolver estos problemas te asegurará tener una base sólida en todos los temas importantes.
AtCoder Educational DP Contest: Una lista de 26 problemas que te enseñan, de forma progresiva, las técnicas y patrones más importantes de la Programación Dinámica. Completar este contest es uno de los mejores saltos de calidad que puedes dar.
Recursos audiovisuales y blogs
Canales de YouTube:
- Errichto: Tutoriales, screencasts de competiciones y explicaciones de problemas de uno de los mejores competidores y educadores.
- Colin Galen (Galinier): Famoso por sus vídeos de “roadmap” y sus streams resolviendo problemas en directo.
- Gennady Korotkevich (Tourist): directos de la leyenda y posiblemente el mejor competidor de la historia. No son tutoriales, sino la oportunidad de ver a un maestro en acción, observando su velocidad y proceso de pensamiento durante las competiciones.
Blogs de Codeforces: Utiliza la función de búsqueda para encontrar blogs de usuarios sobre cualquier tema. Los tutoriales y editoriales escritos por competidores de alto nivel (rojos y legendarios) suelen ser de una calidad excepcional.
Clases de Steven Skiena (autor de “The Algorithm Design Manual”)