¿La programación competitiva se trata más de pensar o de implementar (modificar) algoritmos conocidos?

Ambos son en realidad lo mismo. La programación competitiva definitivamente te obliga a pensar de manera diferente, a veces fuera de la caja. Las restricciones mantenidas en cada problema están muy bien pensadas para obtener soluciones óptimas.

Hay muchos algoritmos estándar en los que las preguntas a menudo se basan en programación dinámica, algoritmos de gráficos y algoritmos de cadena. Sin embargo, es muy poco probable que la pregunta exija una implementación directa de algoritmos conocidos (también debido al hecho de que los programadores son inteligentes googlers también). En la mayoría de los casos, los algoritmos conocidos están un poco torcidos e implementados (lo que lo obliga a pensar). Esto se hace para garantizar 2 puntos:

  1. Realmente entiendes el funcionamiento del algoritmo en cada fase.
  2. Pasas un tiempo considerable pensando y ejercitando tu cerebro.

Pero hay varias preguntas sobre combinatoria, manipulación de bits y matemáticas para las cuales no se conoce un algoritmo y el programador tiene que pensar para obtener la solución óptima.

Por lo tanto, tanto los hechos como el pensamiento y la modificación de algoritmos conocidos son difíciles de separar, van de la mano entre sí.

Ambos en cantidades iguales. Este es un juego de la mente. Una vez que dejas de pensar que mueres.

Pero, por supuesto, dominar los algoritmos es imprescindible. Es una herramienta como el lenguaje de programación que utiliza para mostrar sus resultados. Entonces, reúna primero el conocimiento requerido de algoritmos y estructuras de datos.

Use Introducción a los algoritmos para aprender el algoritmo básico y las estructuras de datos.

No te quedes atrapado en un solo problema durante demasiado tiempo (6 horas como máximo) mientras estás aprendiendo. Busca la solución y entiéndela. Si la solución requiere que tenga cierto conocimiento, vaya a buscarlo en Google o stackexchage.

Se trata principalmente de pensar soluciones y reducir la complejidad del espacio y el tiempo para satisfacer las limitaciones. Eso es lo que lo hace divertido y atractivo. Por ejemplo, derivando cierta recurrencia de programación dinámica, modelando el problema en términos de gráficos, etc.

La mayoría de las veces, el problema no será directo (a menos que esté buscando soluciones fáciles) y tenga que pensar mucho para reducirlo a problemas conocidos. Pero modificar algoritmos conocidos es bastante común en caso de problemas avanzados. Otras clases de problemas avanzados implican muchas matemáticas o la combinación de muchos conceptos que has aprendido de una manera novedosa.

More Interesting

Dados dos archivos de registro, cada uno con mil millones de nombres de usuario, ¿cómo podemos encontrar todos los nombres de usuario presentes en ambos archivos de registro de manera eficiente?

¿Se puede implementar BFS sin usar una cola? En caso afirmativo, ¿cuál es la mejor complejidad que se puede lograr?

¿Sigue siendo relevante el modelado de objetos, o se ha reemplazado hoy solo con datos y algoritmos?

¿Debo comenzar a aprender algoritmos y estructura de datos si solo tengo algunos conocimientos básicos de programación Java?

¿Debería seleccionar siempre el algoritmo con el menor orden de complejidad?

¿Cómo podemos desarrollar un algoritmo para emitir juicios sobre casos legales en India?

¿Cuál es el tipo de algoritmo utilizado para resolver el problema de 8 reinas?

¿Cuál es el algoritmo de búsqueda utilizado por el motor de búsqueda de Google? ¿Cuál es su complejidad?

Cómo convertir 8.426661309628124e + 22 a 84266613096281243382112 en Javascript

¿Cuáles son las mejores aplicaciones de algoritmos en la vida real?

¿Cómo podemos generar k enteros aleatorios únicos en el rango [1 ... n] con igual probabilidad?

¿Qué libro debo comprar para aprender sobre algoritmos: estructuras de datos y algoritmos simplificados por Narsimha Karumanchi o Introducción a los algoritmos (CLRS)?

¿De qué manera es el capitalismo como un algoritmo?

¿Cuál es la última actualización en el algoritmo SEO de Google en 2017 para un rango de sitio web?

¿Cuál es el enunciado del problema resuelto por el algoritmo Bellman-Ford?