Cómo prepararse para ACM ICPC cuando solo quedan 6 meses

Resolver problemas rápidamente es una de las cosas clave para ACM ICPC y, definitivamente, trabajar mucho lo mejorará mucho. Es bueno tener esa actitud; se pagará un día La respuesta más común es practicar, practicar, practicar , especialmente en viejos problemas de ACM ICPC . Pero esto no te ayuda mucho con solo decir esto, ya que parece que no eres tan avanzado. Le mostraré algunos pasos básicos para practicar y tomaré su nivel de 1 a 100 muy rápido (si se aplica correctamente). Verifique también estas respuestas: ¿Cómo me preparo para el ACM-ICPC y cómo puedo aumentar mis posibilidades de sobresalir en cualquier evento de programación competitivo? // A pesar de ser relativamente deficiente en programación, quiero trabajar más y algún día llegar a las finales internacionales de ACM ICPC. ¿Cómo lo hago?

# 1 Comience más simple. Las páginas de entrenamiento de USACO parecen ser una buena opción para ti. Te calentará y estará listo para ir. Si sientes que esto es demasiado fácil para ti, entonces omítelo; no es un gran problema. Yo recomendaría altamente lo siguiente:

  • La mejor manera de mejorar la velocidad es hacer muchos problemas en un corto período de tiempo.
  • Pruebe un sitio más fácil como CodeChef comenzando con su pista para principiantes: principiante | CodeChef A veces, solo dedicar unos minutos al problema fácil y codificarlo rápidamente es realmente bueno para practicar la velocidad. De manera similar, para Problemset – Codeforces (CodeForces Problemset ordenados por dificultad), puede usar la misma idea aquí.
  • Nunca he recomendado este sitio, pero he encontrado que CodeFights realmente ayuda a mejorar la velocidad de escritura y sus habilidades de pensamiento rápido bajo estrés. Sin embargo la precaución de ser adicto a jugarlo xD

# 2 Lee sobre algoritmos. Una declaración tan vaga, así que aquí hay una pequeña lista de algoritmos que se utilizan en la codificación competitiva: Estructuras de datos y algoritmos Aquí hay otro enlace para encontrar listas de algoritmos: ¿Cuáles son los algoritmos necesarios para resolver todos los problemas (utilizando C ++) en cualquier codificación competitiva? ¿concurso?

  • Obviamente, esto no cubre todo. Leer el libro de algoritmos de CLRS también será muy agradable.
  • Verá que leer sobre algoritmos es algo así como oferta y demanda . Cuantos más problemas hagas, más algoritmos deberás estudiar.
  • Los algoritmos son una parte importante en cualquier competencia de programación competitiva, así que lea 🙂

# 3 Practicar, practicar, practicar. Esto debe hacerse simultáneamente con # 2. Nunca solo hagas # 2 o # 3; Esto no te ayudará. Necesita implementar Y aprender cómo funciona el algoritmo, de modo que pueda modificarlo como desee . He visto tantos problemas en los que tuve que cambiar algunas partes a un algoritmo y luego el problema fue bastante trivial.

  • Hay tantas plataformas de concurso por ahí. ¿Cuáles son los diferentes concursos de programación en línea?
  • Aquí están los que yo diría para centrarse en:
    • CodeForces : capacidad para ver las soluciones de otras personas, concursos semanales, sin escasez de problemas, la mayoría de los problemas tienen editoriales
    • HackerRank : similar a CodeForces, capaz de ver las soluciones de otras personas, la mayoría de los problemas tienen editoriales
    • Páginas de entrenamiento de USACO : repasa algoritmos básicos sucesivamente con problemas aplicables para ayudar a implementar
    • Problemas pasados ​​de USACO : buenos para la capacitación para el concurso USACO (perfecto para estudiantes de secundaria de EE. UU. Y más abajo)
    • Problemas del pasado de ACM ICPC: es muy importante estudiar y familiarizarse con los temas del concurso que está tomando.
    • Otros: HackerEarth, TopCoder, SPOJ *, CodeChef *, jueces en línea * * las soluciones y los editoriales son raros en estos casos, tendrá que buscar en Google o hacer preguntas.

# 4 No te detengas incluso si te quedas atascado. Obtenga ayuda de inmediato. Realice una o varias de las siguientes acciones:

  • Trate de encontrar soluciones de otras personas o leer el editorial. Consigue la idea principal de la solución. Ahora CIERRE la solución e implementa tu sin volver a leer la solución . Esto es muy importante, para que el algoritmo / solución se hunda en su cabeza.
  • Todos los problemas de codificación tienen patrones. Siempre verás problemas similares todo el tiempo. Por lo tanto, las estrategias y los algoritmos que utilizaste también pasarán por alto. Recuerde las palabras clave que golpean un algoritmo. Esto jugará un papel importante en su éxito como codificador competitivo.

# 5 hacer concursos. No hay mejor práctica que los concursos reales. Los concursos ayudan con su capacidad para contener su estrés y pondrán a prueba sus puntos fuertes al máximo.

  • Después de cada concurso, asegúrese de resolver todas las preguntas que no resolvió durante el concurso. Se llama desechando Esta es una de las mejores maneras de estudiar; Comience con lo más fácil, descubra por qué no pudo resolverlo, lea las soluciones de otras personas, resuélvalo usted mismo. Esta es una clave importante.
  • Si practicas con un equipo, te recomiendo encarecidamente la participación virtual de CodeForces . Este es el santo grial para poner a tu equipo en forma de concurso.

# 6 Diviértete . Realmente no puedes ser bueno en algo si no te gusta. ¡Entonces Diviertete! ¡Buena suerte! Realmente creo que el trabajo duro supera al talento

(hombre … las viñetas en el editor están tan separadas, me rompen la cabeza)