Club de Algoritmia de la Universidad de Sevilla Logo CAUS

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.
  • The Algorithm Design Manual

    • 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.
  • An Introduction to the USA Computing Olympiad (C++)

  • 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.

  • Cracking the Coding Interview

    • 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.
  • Grokking Algorithms

    • 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

  • Problemas y otros recursos organizados por temáticas

  • 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”)