2011-12-29 9 views
6

Esta es una pregunta amplia, pero me gustaría conocer las opiniones de los expertos. Me encontré con un documento Suffix arrays – a contest approach, también encontré algunos comentarios que el participante debe estar preparado con las estructuras de datos ya en la mano. ahora muchos días de acertijos de programación en línea vienen con tiempo limitado. Entonces me gustaría saber cuáles son las otras estructuras/algoritmos de datos con los que uno debería estar preparado.Enfoque de concurso de programación

+0

Tal vez un mejor ajuste para [codegolf.se]? – mac

Respuesta

1

Consultar estas featured articles @ TopCoder. Son verdareramente geniales.

Mientras que usted está en él, sugiero tomar parte en los concursos de programación en TopCoder. Debido a que la mejor manera de mejorar es practicar &, siga participando en tales concursos.

también Project Euler también es muy adictivo.

0

Además, eche un vistazo al libro Programming Challenges, es una gran referencia sobre el tema - presenta los temas necesarios para tener éxito en un concurso de programación, respaldado por un juez online.

11

que han estado compitiendo durante unos 10 años y han creado un no tan mala biblioteca de mí mismo. La mayoría de los competidores realmente buenos tienen sus blogs, por ejemplo, la leyenda Petr Mitrichev y allí explican las ideas que obtuvieron sobre algunos problemas de la competencia. Leer estos puede ayudarte, si ves una buena idea, impleméntala y haz que se almacene. Agrego algoritmos a mi biblioteca cuando veo un problema que los involucra. De esa forma puedo verificar que mi implementación es correcta: solo agrego un algoritmo si he pasado al menos un problema con su implementación.

Aquí es una lista con algunos de los algoritmos que tengo:

  • que tienen una enorme biblioteca geometrial con las clases que representan puntos, líneas, polígonos, segmentos, círculos y algunas operaciones con ellos (por ejemplo intersección, casco convexo de un conjunto de puntos, etc.)
  • de algorithm para componentes fuertemente conectados
  • Tarjan
  • Dinitz algoritmo de flujo
  • aplicación coincidente bipartito
  • Min costo de implementación de caudal máximo
  • Aho-Corasic cadena algoritmo de búsqueda
  • Knuth-morris-pratt cadena algoritmo de búsqueda
  • Rabin-Karp cadena algoritmo de búsqueda
  • El tiempo lineal árbol de sufijos utilizando algorithm
  • exponenciación rápida de ukonnen
  • aplicación polinomio
  • Implementación de enteros grandes
  • números fraccionarios implementación
  • implementación de la clase Matrix
  • descomposición en factores primos
  • Eratosthenes Sieve
  • Segment Tree
  • Hungarian algorithm
  • 2-Sat algoritmo. Para esto utilizo el algoritmo de Tarjan mencionado anteriormente.

Notarás que algunos de los algoritmos más básicos (como BFS, DFS, Dijkstra) no se mencionaron anteriormente y eso es porque no los tengo implementados. Estos algoritmos no se pueden generalizar fácilmente de forma que simplemente los copie y pegue, y todo funcionará. También me lleva menos de 5 minutos escribirlos. Por lo general, pongo en mi biblioteca únicamente algoritmos que son difíciles de implementar o que son fáciles de cometer un error al implementarlos.

Cuestiones relacionadas