Acabo de terminar mi primer semestre y planeo comenzar una programación competitiva. Puedo resolver bastantes problemas en CodeChef. Los problemas están avanzados ahora. ¿Debería concentrarme primero en matemáticas discretas o recurrir a estructuras de datos y algoritmos?

Dado que está después del primer semestre, supongo que tendrá su clase de matemáticas discreta en el próximo semestre o el próximo, por lo que no creo que tenga sentido duplicarla, pasar el tiempo de vez en cuando. aburrirse (pero pasar el tiempo una vez más) en las clases. Ir a algoritmos me parece mucho más atractivo, porque si quieres estar en la programación competitiva, tendrás que dedicar mucho más tiempo a aprender y practicar algoritmos que solo en la clase ADS. Por lo tanto, la clase en sí será una especie de revisión y tal vez corrija algunos conceptos que te equivocaste, pero si tu universidad lo tiene a un nivel decente, no creo que haya demasiada pérdida de tiempo en que aprenderás más antes y luego tendrás la oportunidad de seguir practicando al tratar de crear un algoritmo para la tarea del curso. Es probable que este tipo de pérdida de tiempo suceda si te enfocas en matemáticas discretas en lugar de algoritmos imo.

No me malinterpreten, me gustan mucho las matemáticas discretas, pero su importancia para aprender algoritmos así como para la programación competitiva es realmente exagerada. La parte importante es, de hecho, desarrollar el tipo de pensamiento que es mutuo para los algoritmos y las matemáticas discretas. Pero si los desarrolla aprendiendo algoritmos, bueno, eventualmente necesitará aprender matemáticas discretas algún día, pero no es necesario que sea pronto.

Digámoslo de esta manera: la mayoría de los programadores competitivos comenzaron en la escuela secundaria (incluido yo mismo). Todos aprendieron la mayoría de los algoritmos que necesitará para los concursos de nivel universitario mientras estaban en la escuela secundaria, resolvieron problemas como los universitarios, ganaron las Olimpiadas Nacionales y todo esto fue mucho antes de tomar su primera clase de matemáticas discretas. Simplemente desarrollaron las habilidades necesarias mientras practicaban para concursos algorítmicos en lugar de un curso universitario.

Concéntrese en sus matemáticas discretas, esta es la base
Resolver problemas relacionados con las matemáticas de SPOJ, ProjectEuler
Luego vaya a DSA (estructuras de datos y algoritmos)
Ahora está listo para hacer todos los problemas moderados en codechef / Hackerrank.
Y luego aprenda algoritmos y conceptos avanzados en informática

Resuelva concursos de Codeforces y desafíos semanales de HackerRank regularmente

Todo lo mejor