¿Qué consejos me sugerirías para mejorar mis habilidades de codificación competitiva?

Me recuerda a mi propia historia. Yo también caminé por ese camino. Su capacidad para resolver ad-hoc me dice que puede pensar bien en soluciones y que sus habilidades de implementación también son bastante buenas. Lo que necesita es el conocimiento de matemáticas discretas, estructuras de datos y algoritmos y la aplicación de esos conceptos.

Resolver mil problemas pidiéndole que agregue N enteros no ayuda. Empújese fuera de la zona de confort. Si un problema no le enseña cosas nuevas, entonces no será tan útil aparte de aumentar su velocidad de escritura.

Cuando aprende nuevos conceptos, lleva tiempo y es posible que no pueda resolver 4 problemas al día. Tenga en cuenta que lo que aprendió y cómo mejoró también es importante, además de la cantidad de problemas resueltos. (Lea el segundo párrafo nuevamente)

Vea los problemas que lo harán pensar mucho. Intenta aplicar los conceptos que ya conoces. Si todavía está atascado, lea el editorial, aprenda los conceptos mencionados en él. Lo más probable es que obtenga los enlaces en el editorial en sí. Luego lea el editorial nuevamente e intente comprender lo que está sucediendo, primero de manera intuitiva y luego matemáticamente (ambos son importantes, aunque la intuición no siempre funciona). Implemente la solución por su cuenta. Luego lea el código de otros si tiene acceso a él (en sitios como Codechef, puede) para ver si hay una mejor manera de implementarlo. Pero, de repente, no saltes de un nivel principiante a un nivel difícil. Definitivamente te asustará. Ir en pasos progresivos en lugar de saltos abruptos.

Recuerda que tienes que aprender cosas sobre la marcha y mejorar. Nunca pienses que aprenderé todos los conceptos en programación competitiva y luego resolveré problemas. No funciona Cometí ese error hace algún tiempo y por favor no lo hagas.

Historia personal: hace unos años, intenté resolver REVERSE en Codechef. En ese momento no conocía el algoritmo de ruta más corta de Dijkstra y lo intenté durante dos días sin éxito. ¡Luego aprendí el algoritmo después del concurso y fue sencillo!

La única forma de mejorar es seguir practicando.

Cuanto más practiques, más te expondrás a diferentes tipos de algoritmos, diferentes formas de resolver una pregunta, aumentar tu conocimiento general sobre estructuras de datos y algoritmos y, además, mejorar.

Una cosa que noté después de mirar tu perfil fue que no intentaste con esfuerzo o incluso intentaste inventar una solución de fuerza bruta de cualquiera de las preguntas restantes en el desafío MARZO. Si quieres mejorar, debes comenzar a codificar, si no entiendes nada, solo codifica al menos un enfoque de fuerza bruta.

Para practicar, hay varios sitios, comencé con hackerrank, ya que en su pestaña de algoritmos lo han dividido muy bien en diferentes subsecciones, puede elegir el sitio que prefiera más.

Pero aparte de todo , después de que termine el concurso, ve y mira los editoriales. Una vez que eches un vistazo a los editoriales, sigue adelante y escribe un código basado en su lógica, si sigues haciendo eso, estoy seguro de que lo harás. mejorar.

También recuerde una cosa más, hacer 4 preguntas fáciles podría no serle útil, en su lugar, vaya a 1 pregunta media / difícil a través de la cual puede aprender algunos conceptos nuevos. (Al final del día, después de hacer algunas preguntas, debería estar satisfecho que aprendiste algo nuevo hoy).

¡Feliz codificación!

Sigue practicando y participando; y desarrolle la actitud de permanecer con el problema por más tiempo, incluso si está seguro de que no lo alcanzará. Porque a pesar de que es posible que no llegue a un AC, la lucha que atraviesa intentando diferentes enfoques, enfoques alternativos, diferentes combinaciones; esa lucha te enseña mucho. Más tarde, cuando resuelva (es decir, intente resolver después del lanzamiento editorial) y compare la solución editorial con su enfoque; puedes introspectar tu pensamiento e intentar analizar dónde estabas yendo mal; en qué dirección estabas pensando más cerca de la solución.

Créeme amigo, cuando digo que no es AC lo que te enseña, sino que es difícil resolverlo para obtener AC que te enseña mucho. Eso debe motivarte a tratar de resolver problemas de nivel medio; intenta fuerte ; no me importa si llega a AC o no.

Y, el aprendizaje debe ir de la mano con la práctica; si ha intentado resolver el problema y no ha llegado a ninguna parte, compruebe las etiquetas. Si la etiqueta contiene el concepto que no conoce (por ejemplo, bfs); intente leerlo en la Web y vuelva nuevamente al problema.

Y, nunca te preocupes por la calificación; Si cae hoy, se levantará mañana. Si sube hoy, podría caer otro día. La calificación es solo una cifra. Centrarse en el aprendizaje.

Y tome en serio el concepto de Upsolving cuando asista al concurso y no resuelva los problemas; Una vez finalizado el concurso, debe volver a esos problemas, leer el editorial, codificarlo y enviarlo.

Por último, nunca des esperanza. El ritmo de mejora y aprendizaje es diferente para todos. Mantener persistencia y perseverancia.

Por último, Practicar y participar y Upsolve es mi sugerencia resumida.