¿Es la codificación competitiva todo sobre estructuras de datos y algoritmos?

No. Hay mucho más que la codificación competitiva puede enseñarle aparte de Algoritmos y DS.

No todos los concursos están limitados a 0/1 preguntas. Ejemplos:

  1. Kaggle – Aprendizaje automático
  2. CodinGame – Inteligencia Artificial

A medida que la competencia se hace más larga y más difusa, el programador con una comprensión más profunda del tema lo hace mejor. Mira su código. Los mejores programadores:

  1. Escribir casos de prueba
  2. Tener un código razonablemente limpio
  3. Tener una metodología para resolver los problemas.

Después de un tiempo, te das cuenta de cómo el mal código te ralentiza. Es difícil de cambiar e inútil en futuros concursos.

HackerEarth tiene una nota sobre buenas prácticas de codificación. Le sugiero que lo lea, no porque esté escrito por mí, sino porque este es exactamente el tema del que habla.

¡La mejor de las suertes!

Programación competitiva: Resolver problemas relacionados con la informática bien definidos dentro de las limitaciones de tiempo.

Para resolver tales problemas, usted,

1. Diseñe una solución :

Esta parte utiliza el conocimiento de estructuras de datos y algoritmos. Utiliza estructuras de datos y algoritmos estándar para diseñar un algoritmo que resuelva un problema particular en un tiempo determinado.

La mayoría de los problemas bien definidos se encuentran en una de las siguientes categorías: Divide y vencerás, codicioso, programación dinámica, algoritmos de gráficos, algoritmos numéricos teóricos, algoritmos de cadenas y geometría computacional.

Hay otras categorías como: algoritmos aleatorios, algoritmos de aproximación y otros métodos de optimización, pero los problemas relacionados con estas categorías son muy menores.

Entonces, sí, esta parte trata principalmente sobre el conocimiento de las estructuras de datos y el algoritmo.

2. Código de escritura:

Esta parte utiliza el conocimiento de los lenguajes de programación. Los lenguajes más utilizados son: C / C ++, Python y Java.

Entonces, sí, esta parte trata principalmente de la implementación de estructuras de datos y algoritmos.

Aunque, creo, se trata más de las habilidades para resolver problemas que de cualquier otra cosa.

Si. La programación competitiva SOLO se trata de estructuras de datos, algoritmos y matemáticas discretas. Lo único que importa es la corrección de su algoritmo, el tiempo correcto y la complejidad del espacio para las restricciones dadas, de modo que no termine con errores de Tiempo / Límite de memoria excedido. Eso es todo.

Tú escribes el código. Tirar al juez. Si obtiene CA, entonces ya está. De lo contrario, depure y vuelva a lanzar.

No lo confundas con el desarrollo de software. No lo aprendes aquí. De hecho, debe desaprender hábitos como escribir código ofuscado utilizando algunos métodos exóticos que nadie entiende en el mundo real.

Si por “codificación competitiva” te refieres a la rama principal de las competiciones concentradas en ACM ICPC y concursos relacionados, entonces solo se trata de algoritmos y estructuras de datos, esta es la idea principal para esas competiciones. Sin embargo, hay muchos otros tipos de concursos como muchos tipos diferentes de Hackathons que se centran en otros asuntos, por lo que la programación competitiva en su conjunto no se limita a ADS, aunque su rama más famosa sí lo es.

Al final, puede decir que se trata más de la estructura de datos y el algoritmo, pero no puede ser bueno en la programación competitiva sin el conocimiento de las matemáticas discretas y la teoría de números. Casi cada pregunta está relacionada con la teoría de números.