Voy a decir algo diferente de lo que otras personas dijeron aquí.
Hoy participé en un concurso individual en HackerRank. Solo terminé en el n. ° 5, no logré implementar la solución adecuada para el último problema y tampoco logré exprimir “sucio” para obtener la puntuación completa.
Poco tiempo antes de eso terminé el entrenamiento individual en algún concurso antiguo; en ese concurso de ICPC solo terminé en el # 9, mientras competía contra equipos desde 2009 (cuando los concursantes generalmente no eran tan fuertes como hoy), y no pude resolver al menos un problema en la segunda parte del concurso. Perdí ante el ganador por hasta 4 problemas mientras era top1 en algún momento durante la segunda hora de la competencia.
- ¿Usar un tipo de inserción de 50 elementos tendrá el mismo tiempo de ejecución que usar un tipo de inserción de 10 elementos 5 veces?
- ¿Hay algún caso donde alguien de alguna manera descifró el algoritmo y engañó en el IITJEE?
- Dada una expresión matemática 2 + 4 * 6 + 8-11, ¿cómo la colocaría entre corchetes de manera que proporcione el valor máximo? ¿Es posible codificar esto?
- ¿Qué es una explicación intuitiva de los algoritmos de gradiente proximal?
- ¿Cuál es la mejor fuente para aprender del algoritmo y la estructura de datos para principiantes?
En mi última ronda de FQ pasé como 30-40 minutos depurando un DP directo para por y terminé sin resolver un problema estándar que ha sido solucionado por algunas docenas de concursantes.
En mi última ronda de TC obtuve un lugar no tan horrible (alrededor del 30) solo por piratear un montón de soluciones ingenuas al primer problema; Perdí AC en la última tarea (y el número 2 en la clasificación general, supongo) debido al uso de int en lugar de mucho tiempo en DP, no pude codificar el segundo problema a tiempo, y resolví el primer problema solo poco tiempo antes del final del concurso por algo así como 90 puntos.
Puedo seguir recordando concursos recientes que hice y agregar algunos más a esta lista 🙂 Mi último AtCoder no fue demasiado bueno; mi última Academia CS fue aún peor 🙂
Lo más probable es que mis habilidades competitivas de programación sean más altas que las de cualquier otro autor que ya haya respondido esta pregunta. Al mismo tiempo, no soy un concursante de alto nivel, y conozco personas que piensan que no puedo desempeñarme bien en los concursos de programación, desde su punto de vista sobre lo que significa “desempeñarse bien”.
Y ya practiqué bastante; probablemente significativamente más que la persona que hizo esta pregunta. ¿Debo dejar de hacer programación competitiva? Sé con certeza que no haré un entrenamiento intenso después de las Finales Mundiales de ICPC ya que mi carrera de programación competitiva generalmente terminará después de eso y me enfocaré en otras cosas (como trabajo o superación personal, ya sabes …), pero es muy probable que siga haciendo algunos concursos y revisando las noticias y eventos que suceden en la comunidad. Ahora imagine por un tiempo que comenzaré a reflexionar sobre cada uno de mis concursos (la gran mayoría de los cuales son completos; creo que en la mayoría de los eventos mencionados anteriormente mejoré mis calificaciones, por lo que hay momentos en que es aún peor) y me preocupa. que me estoy desempeñando tan mal. Sería una imagen bastante triste 🙂
Todos estos “no te rindas” y “todo irá bien algún tiempo después” suena genial, pero diría que debes dejar de hacer programación competitiva (o al menos dejar de tomarlo en serio) o cambiar tu enfoque y percepción. Si lo disfruta, no debería preocuparse tanto por sus resultados. Cuando juegas a un juego de computadora y lo disfrutas, ¿te importa tanto que haya personas en algún lugar del mundo que puedan jugarlo mejor? En caso de que te importe tanto que te quite la alegría de jugar, no suena bien. Igual que aquí. Mejorará con el tiempo simplemente haciendo esta actividad, mejorará más rápido al esforzarse más e invertir más tiempo / esfuerzo en ella, es probable que no se convierta en el mejor del mundo, es posible que ya sea bastante bueno desde el punto de vista de vista de algunos concursantes que son menos hábiles, la mayoría de las personas que lo rodean lo hacen simplemente porque lo disfrutan (aquí es el momento de todas estas historias que he leído sobre India, Egipto, etc., pero al menos en países sobre los que sé cómo funciona allí, es así: la gente está haciendo una programación competitiva no porque sus padres los obligaron a hacerlo) .
Si tiene miedo de perder el tiempo, diría que tal vez no sea la inversión más óptima y rentable de su tiempo, pero no es peor que jugar o ver películas. Mejora algunas de sus habilidades, le brinda algunas ventajas: no es la mejor manera de convertirse en el mejor programador del mundo y obtener el trabajo soñado, y tampoco es una pérdida de tiempo sin sentido.
Según mi experiencia, la mayoría de las personas que dicen “Soy tonto por algo” ni siquiera lo intentaron; por lo general, “soy flojo por eso” suena mejor. Una vez en un campo de entrenamiento, un chico me dijo algo como “probablemente sea triste ser tan estúpido como tú”; Conozco a otro tipo que me dijo: “Tengo curiosidad de por qué asistes al campamento de entrenamiento, siendo tú, prefiero dejarlo y comenzar a hacer algo de lo que eres capaz, como el trabajo de oficina de rutina o la subcontratación” . Ambos tienen mayores logros en programación competitiva que yo, y tienen sus razones para pensar que no solo soy menos inteligente que ellos, sino que no soy muy inteligente en general, en ambos casos se ha dicho más bien en serio, no como una ironía / broma / juego de palabras estándar. Conozco a muchas personas que parecen ser más inteligentes que yo. Cuando estoy mirando a un concursante superior que es más inteligente que yo, puedo pensar que tal vez él esté en la cima porque él es inteligente mientras yo no lo soy, o porque trabajó mucho más que yo, o tal vez es más inteligente porque trabajó más que yo … Pero el punto es que eso no importa mucho 🙂
Resumiendo: piense si tiene razones para hacer una programación competitiva y si parece un buen gasto de su tiempo, en caso de que lo haga: siga trabajando en usted mismo, use Google / Quora / Codeforces para encontrar sugerencias / ayuda / sugerencias para mejorar tus habilidades y simplemente diviértete y disfruta el hecho de que hoy eres un poco mejor que la semana pasada o el mes pasado sin preocuparte demasiado que en comparación con el turista eres un novato completo; en caso de que no sea así, será una buena idea dejar de hacerlo y disfrutar de tu vida de otra manera.