Supongo que sabes la notación Big-Oh. Le sugiero que aprenda algoritmos y estructuras de datos conocidos y continúe con Fácil o Medio-Medio en Codechef. Hay problemas en la sección Fácil que requieren que usted conozca conceptos como Máximo flujo que está avanzado. Si estás atascado con un problema lee los editoriales.
Aprende sobre la marcha . No piense que “aprenderé todo lo que se requiere para una programación competitiva y luego comenzaré a practicar”. Vas a fallar He caminado por este camino hace algún tiempo y me di cuenta de esto de la manera más difícil.
Por estructuras de datos y algoritmos conocidos me refiero a los que están cubiertos en cada texto introductorio de algoritmos. Sugiero “Introducción a los algoritmos”, también conocido como CLRS. Supongo que eres algo bueno en matemáticas. Estudia los algoritmos, sus pruebas, resuelve algunos ejercicios antes de pasar al siguiente. Hay algunos temas como el montón de Fibonacci, el árbol de Van Emde Boas, el árbol B, los algoritmos de subprocesos múltiples, los algoritmos de completamiento y aproximación de NP, etc. que se pueden omitir por ahora. Además, no es importante conocer los detalles del árbol rojo-negro, ya que ya está en la biblioteca estándar y, tal vez, nunca los codifique en concursos. Es tedioso
Siga estos pasos para aprender cualquier estructura de datos o un algoritmo
- Cómo empezar a gustar aprender y estudiar como adolescente.
- ¿Necesito clases formales para aprender programación?
- ¿Cómo puedo empezar a aprender Qigong por mi cuenta?
- Cómo aprender a dibujar a mano gratis diseño de coches en línea
- ¿Qué podemos aprender del fuego?
- Aprende el concepto de manera intuitiva. En este paso, es importante comprender cómo funciona. Debería poder imaginar la ejecución y explicar por qué funciona de manera intuitiva.
- Pon en práctica lo que aprendiste. Cuando se siente a implementar, se encontrará con muchos problemas que no encontrará mientras estudia la teoría.
- Si es posible, practique algunos problemas que requieren que los conozca en su juez en línea favorito.
- Ahora que lo entiendes bastante bien, estudia sus detalles matemáticos. Es decir, estudiar el concepto con rigor. Cuando modifica un algoritmo o una estructura de datos, puede adivinar si realmente funciona o no (porque su intuición puede no ser correcta todo el tiempo).
El último paso es importante, especialmente si el algoritmo que está estudiando pertenece a la categoría de algoritmos codiciosos o programación dinámica. La solución codiciosa es fácil de pensar e implementar. ¡Es extremadamente fácil obtener una respuesta equivocada también! Las soluciones codiciosas pueden parecer intuitivas, pero pueden fallar. Me ha pasado esto.
No se desanime si le resulta difícil pensar en soluciones de programación dinámica. No es tan fácil y requiere práctica.
Finalmente, sigue mejorando tus habilidades matemáticas discretas. Abres un problema. Si no puede resolverlo durante algún tiempo, abra el editorial, consulte los requisitos previos, aprenda y aplique.
También puede probar la “Programación competitiva – 3” de Steven y Felix Halim, que está escrita específicamente para programadores competitivos.
Todo lo mejor 🙂