¿Cuáles son las cosas más incomprendidas sobre programación competitiva y concursos de programación como ACM ICPC?

Conceptos erróneos de personas que no están relacionadas con la programación en absoluto:

  1. Oh, estás compitiendo en programación, así que si eres bueno en estas competiciones, significa que puedes hacer otro Google por tu cuenta, ¿verdad? ¿Sueles hacer juegos de computadora cuando no estás haciendo estas competiciones? ¿O también haces juegos de computadora durante las competiciones?
  2. Así que tienes muy poco tiempo y tienes que escribir muchos programas en ese momento, es una especie de competencia de velocidad de mecanografía, ¿verdad?
  3. ¿Puedes arreglar mi teléfono / reparar mi laptop?

Yo diría que los 3 están relacionados con la programación en general, pero dado que usted es un programador competitivo, debería significar que es realmente bueno en la programación, ¿verdad? Al menos otras personas piensan que sí.

Conceptos erróneos de personas que realmente decidieron ingresar a la programación competitiva:

  1. La programación competitiva es un indicador de las habilidades de programación de alguien / habilidades de desarrollo de software.
  2. La programación competitiva se debe hacer para obtener trabajo en las principales empresas: esa es la motivación que impulsa a los mejores concursantes, y esa es la razón más importante para que exista una programación competitiva. Las actividades directamente relacionadas con la mejora de sus habilidades profesionales no le darán trabajo, o al menos necesitarán una cantidad de tiempo igual o incluso mayor que la cantidad de tiempo que necesita dedicar a la programación competitiva para obtener buenos resultados allí. Todas las compañías geniales deberían darte trabajo por tener altas calificaciones, incluso si no conoces la programación, porque tener una alta calificación significa que eres un programador increíble ( ver arriba ).
  3. Absolutamente deberías hacer una programación competitiva durante tus años universitarios: esa no es solo la forma de conseguir el trabajo, sino también la forma correcta de aprender cosas que necesitarás para hacer bien ese trabajo.

Como ex participante en múltiples concursos de programación, el error más común es sobre lo que implica. Cuando dices “concurso de programación”, la mayoría de las personas piensan en una competencia en la que el objetivo es construir programas (específicos) listos para la tienda de aplicaciones lo más rápido posible (piensa en la competencia Ludum Dare). En realidad, los concursos asociados con el ICPC de ACM se centran en la deducción e implementación de algoritmos de resolución de problemas.

Facebook Hacker Cup no se trata de hackear la cuenta de Facebook de las personas, en realidad es un concurso de programación para una sola persona muy popular.

Desde mi experiencia en la vida real, el concurso de programación como ACM ICPC o cualquier concurso de programación en equipo no se trata de un solo espectáculo, sino que se trata principalmente de un rendimiento conmutativo del equipo. El equipo que depende en gran medida del rendimiento de un solo hombre no tendrá tanto éxito.

More Interesting

¿Cómo podemos encontrar de manera óptima la suma máxima de números de dos conjuntos (de números) que sea menor que un valor fijo, digamos N?

Cómo garantizar un resultado devuelto de la función que llamamos (en sí mismo) es correcto en la recursividad

¿Crees que el rendimiento de Renaissance Capital puede estar vinculado a algoritmos que también se usan en el reconocimiento de voz?

Cómo mejorar un algoritmo para pseudo triangular un polígono

¿Cómo determinan los algoritmos de creación de mercado qué tan agresivamente deberían salir de las posiciones?

¿Qué tipo de clasificación es esta?

Cómo determinar el orden de visita de todas las hojas de un árbol enraizado, de modo que en cada paso visito una hoja cuyo camino desde la raíz contiene los nodos más no visitados

¿Cuál crees que es el algoritmo de optimización más inteligente?

Dos jugadores juegan el siguiente juego: hay N piedras en la mesa, el jugador puede tomar 1 o 2 piedras (si N mod 3 = 0), 1 o 3 (si N mod 3 = 1) y 1, 2 o 3 ( si N mod 3 = 2). ¿Cómo determino al ganador en el juego?

¿Cómo se puede averiguar el número de veces que se repite una palabra en una cadena usando Java?

¿Cómo se puede ser bueno para resolver problemas de algoritmos / programación? Soy un principiante, y me sugirieron que leyera el libro CLRS para aprender sobre algoritmos.

¿Qué tipo de algoritmo usó Uber?

¿Cuáles son algunos de los mejores algoritmos?

Cómo cifrar un fragmento de texto usando un algoritmo de cifrado

¿Cuál es la mejor manera de usar la notación O grande para determinar la tasa de crecimiento del tiempo de ejecución de un algoritmo?