Comencé a prepararme para Google Code Jam 2015. Mi DSA no es muy bueno, así que comencé a leer Introducción a los algoritmos de Thomas Cormen. ¿Qué temas y capítulos son necesarios para hacer suficiente preparación para Code Jam 2015?

Dado que usted preguntó específicamente sobre GCJ, ¿por qué no mirar el problema del año pasado?

Ronda de Calificación :

  • Problema A: no requiere ningún algoritmo sofisticado, solo necesita sentirse cómodo con sus lenguajes de programación .
  • Problema B: debe poder analizar el problema, desarrollar un algoritmo codicioso y tener algunas habilidades matemáticas básicas para derivar toda la fórmula. Por supuesto, debe poder implementarlo en algún lenguaje de programación.
  • Problema C: Este también es un problema ad-hoc, en el que debe aplicar fuerza bruta en casos pequeños y luego analizarlos para encontrar patrones.
  • Problema D: una vez más, este problema no requiere ningún algoritmo sofisticado, pero debe poder analizar el problema .

Ronda 1A

  • Los problemas en esta ronda son principalmente similares a la ronda de Calificación, en el sentido de que todos los problemas requieren solo un análisis cuidadoso del problema, algunas matemáticas y la capacidad de implementar una solución.
  • El problema C es un poco más difícil, si no está familiarizado con el aprendizaje automático, es muy difícil encontrar una solución que funcione. Aunque este es un problema único en su tipo, y es poco probable que vea este tipo de problema en otro lugar.

Resumir
Entonces, lo que necesita tener es la capacidad de analizar problemas, matemática básica, buena intuición, capacidad de implementar cosas de manera correcta y eficiente. Algoritmos como programación dinámica, algoritmos gráficos, problemas de estructura de datos aparecen aquí y allá, pero no los verá todo el tiempo. A veces, verá problemas únicos, que pueden requerir algo de Machine Learning (problema C arriba), algoritmo aleatorio (apareció en el año anterior) …

Sobre el libro
Entonces, ¿ayuda el libro ” Introducción a los algoritmos de Thomas Cormen”? , definitivamente ayuda.

  • Le enseña a analizar la complejidad y debe comprender esto para saber si su solución es lo suficientemente eficiente como para resolver el problema.
  • Te enseña cómo abordar los problemas algorítmicamente . Incluso si eres un genio, es muy difícil resolver problemas en GCJ si no estás familiarizado con lo que el algoritmo puede y no puede hacer, y cómo ‘pensar algorítmicamente’.
  • Como se mencionó anteriormente, aparecen problemas de programación dinámica, algoritmo gráfico, estructura de datos .
  • Le enseña sobre problemas de P & NP , por lo que puede saber que algunos enfoques conducen a un callejón sin salida y no necesitan perder el tiempo.

Entonces, ¿con qué capítulos comenzar? Primero, lea los capítulos sobre la complejidad del algoritmo, la programación dinámica, los algoritmos de gráficos y las estructuras de datos. Esos son los conceptos básicos y debe estar muy familiarizado con la resolución de estos problemas. Luego, puedes leer al azar o lo que te parezca interesante.

Comentario final
Además de leer el libro, debe intentar resolver algunos problemas en sitios de programación competitivos, por ejemplo, Concursos – Codeforces. Le ayudará a conocer su propia habilidad y familiarizarse con las preguntas de programación.
Buena suerte 🙂

Podrías probar el texto complementario más básico de Cormen, Algorithms Unlocked .

Puede probar los temas de estructura de datos cubiertos en http://www.codersmaze.com
Serían suficientes para que aparezcas en la competencia y también la forma en que se ha explicado te haría leer menos y entender más.
¡Mucha suerte y espero que esto ayude!