La impaciencia es un vicio, joven Jedi. Vamos a ir despacio, ¿vale?
- Primero, aprende a escribir un programa de hello world. Esta es la parte más fácil.
- Luego comience a resolver problemas de nivel fácil div2 (250 puntos por lo general). Solo prueban si puedes traducir la más simple de las ideas en código o no. A menos que pueda resolver cualquier problema de este tipo en puntaje> = 240 en un día cualquiera, simplemente no puede traducir sus ideas en código. Sigue practicando.
- Ahora sabes codificar un poco. Es hora de aprender algunos algoritmos. Lee los tutoriales de Topcoder, son un recurso excelente, resuelve todos los problemas vinculados. Lee los foros de topcoder y acostúmbrate al ecosistema. Estudia algunas técnicas de algoritmos básicos como la Programación Dinámica y divide y vencerás. Estudie Teoría de gráficos, algo de Combinatoria y algo de Teoría de números, todo esto mientras resuelve problemas en Topcoder y en otros lugares. Puedes encontrar todo el conocimiento en internet fácilmente.
- Si ha llegado a esta etapa, sabe cómo escribir código y sabe lo suficiente de la teoría básica de algoritmos. Los problemas de Topcoder div1-500 a menudo son muy difíciles, antes de que empieces a resolverlos, deberías poder resolver los problemas de 250 div2, 500, 1000 y div1 de 250 puntos.
- Asegúrate de codificar todo. Resolver un problema teóricamente es agradable y bueno, pero no se detenga ahí, codifíquelo y asegúrese de que pase la prueba del sistema.
- Una vez que lo haga, elimine todo el código y comience desde cero. Vuelva a escribir todo el código. Hazlo bien en el primer intento. Mira cuánto mejora tu tiempo.
- Empieza a leer los códigos de los mejores jugadores, lo que básicamente significa todos los rojos, objetivos y varios amarillos también. Estos chicos son inteligentes y hay mucho que puedes aprender de su código.
- Ir a través de la editorial de cada problema que resuelva (o no puede resolver). A menudo vienen con grandes ideas y soluciones alternativas, etc.
- No te acostumbres a resolver problemas fáciles. Es un error común. Siempre resuelva los problemas más difíciles de lo que puede resolver; así es como aprende.
Y cuando has estado haciendo todo esto por un tiempo, estás listo. Pronto descubrirás que estás resolviendo más y más problemas de puntero div1-500. La práctica es la clave de ahora en adelante.
Lo que hicimos nosotros (mi equipo de ICPC) en particular fue: mantener una hoja de cálculo de nuestro registro de práctica de Topcoder. Decidimos hacer div1-500 punteros de todos los partidos de 300 en adelante. Así que una vez que comiences un partido, asegúrate de terminar su problema, incluso si tienes que ver el editorial después de luchar durante horas. Sé persistente y no te rindas.
Cuánto tiempo demora antes de alcanzar su objetivo y cuánto tiempo debe dedicar, estas son preguntas altamente subjetivas sin una respuesta definitiva. Todo varía en su velocidad y capacidad de comprensión. Sé que suena cliché, pero créeme, esta es la única respuesta correcta.
- ¿Cómo las personas altamente inteligentes adoptan la transición de ser las más inteligentes a estar a la par o por debajo al ingresar a universidades de prestigio?
- Para los hombres: ¿Qué se siente al perder pelo en la cabeza?
- ¿Está bien con X: está bien creer que estás destinado a la grandeza?
- Confianza en sí mismo: ¿Cómo revives tu motivación o interés hacia algo cuando te das cuenta de que está disminuyendo o perdido de alguna manera?
- Confianza en sí mismo: cuando se despierta y tiene problemas para creer que logrará sus objetivos, ¿qué hace?
¡Buena suerte joven Jedi, que la fuerza te acompañe!
PD: También podría estar interesado en la respuesta de Pradeep George Mathias a ¿Qué se necesita para convertirse en un buen algoritmo como los mejores clasificados en Topcoder / Spoj / GCJ?