Por supuesto, necesitará comprender la mayoría de las mecánicas detrás de los algoritmos para saber cuál aplicar para qué situación y cómo ajustar un poco el algoritmo para que coincida con el problema dado.
Tengo cerca de un año de experiencia en resolución de problemas y puedo asegurarles que los principiantes encontrarán problemas avanzados muy difíciles, y esto no se debe únicamente a la falta de conocimiento algorítmico.
La resolución de problemas en codeforces y otros sitios de programación competitivos requiere que piense de una manera determinada que es muy difícil de describir o explicar, la mejor descripción que puedo proporcionar es “Pensamiento lateral”, pero nuevamente, esto se puede obtener a través de la experiencia. Por lo tanto, le sugiero que se asegure de comprender la mayoría de los algoritmos comunes en la programación competitiva (comprender, no memorizar) y practicar primero con problemas fáciles y pasar gradualmente a preguntas más difíciles, aprendiendo de los análisis de los problemas más difíciles. Asegúrese de pasar tiempo pensando en el problema antes de darse por vencido o buscar soluciones en Internet.
- ¿Cuál es la diferencia entre las estructuras de datos de std :: vector y std :: deque?
- Quiero usar una cola prioritaria en un problema. Creo que implementar una cola prioritaria usando una matriz es más fácil que usar un montón. ¿Qué piensas y por qué?
- ¿Cuán relevantes son los fundamentos de CS (compiladores, análisis de algoritmos, estructuras de datos, etc.) en el desarrollo web profesional?
- ¿Por qué todos me dicen que aprenda la estructura de datos y los algoritmos si quiero obtener un trabajo de desarrollo de software?
- ¿Cuáles son algunas aplicaciones del algoritmo de clasificación de burbujas?
EDITAR: para algoritmos comunes que debe saber (no en orden de importancia)
- (No es un algoritmo, pero es muy importante) Recursión y otros tipos de programación dinámica
- DFS y BFS, luego el algoritmo APSP de Dijkstra y Floyd Warshall
- Algoritmo de suma máxima de rango 1D de Kadane
- Árbol de segmentos (implementación, manipulación)
- Codiciosos y dividir y conquistar métodos
- (de nuevo, no tanto un algoritmo) Aritmética modular
- Sumas acumulativas