Questa è una domanda ampia, ma vorrei conoscere le opinioni degli esperti. Mi sono imbattuto in un documento Suffix arrays – a contest approach, ho anche trovato alcuni commenti che il partecipante dovrebbe essere pronto con tali strutture di dati già in mano. ora un sacco di puzzle di programmazione online arrivano con il tempo limitato. Quindi mi piacerebbe sapere quali sono le altre strutture/algoritmi di dati con cui si dovrebbe essere pronti.Approccio al concorso di programmazione
risposta
Dai un'occhiata a questi featured articles @ TopCoder. Sono davvero fantastici.
Mentre ci sei, ti suggerisco di prendere parte ai concorsi di programmazione su TopCoder. Perché il modo migliore per migliorare è praticare & continuare a partecipare a tali concorsi.
Anche Project Euler è davvero avvincente.
Inoltre, dare un'occhiata al libro Programming Challenges, è un ottimo riferimento sull'argomento - presenta gli argomenti necessari per avere successo in un concorso di programmazione, supportato da un giudice online.
Sono in competizione da circa 10 anni e ho creato una libreria non proprio cattiva. La maggior parte dei concorrenti molto validi hanno i loro blog, ad esempio la leggenda Petr Mitrichev e lì spiegano le idee che hanno avuto su alcuni problemi competitivi. Leggere questi può aiutarti - se vedi una buona idea implementala e salvala. Aggiungo algoritmi alla mia libreria quando vedo un problema che li riguarda. In questo modo posso verificare che la mia implementazione sia corretta, aggiungo solo un algoritmo se ho superato almeno un problema con la sua implementazione.
Ecco una lista con alcuni degli algoritmi ho:
- Ho una vasta libreria geometrial con classi rappresentanti punti, linee, poligoni, segmenti, cerchi e alcune operazioni con essi (per esempio intersezione, convesso di un insieme di punti, ecc)
- Tarjan di algorithm per componenti fortemente connesse
- Dinitz algoritmo flusso
- attuazione corrispondenza Bipartite
- min Costo implementazione max flusso
- Aho-Corasic stringa algoritmo di ricerca
- Knuth-morris-pratt stringa algoritmo di ricerca
- Rabin-Karp stringa algoritmo di ricerca
- Il tempo lineare albero suffisso utilizzando algorithm
- elevamento a potenza Fast ukonnen
- implementazione polinomio
- Grande implementazione intera
- numeri frazionari di implementazione
- implementazione della classe Matrix
- Primo fattorizzazione
- Eratosthenes Sieve
- Segment Tree
- Hungarian algorithm
- 2-Sat algoritmo. Per questo uso l'algoritmo di Tarjan sopra menzionato.
Si noterà che alcuni degli algoritmi più elementari (come BFS, DFS, Dijkstra) non sono menzionati sopra e che è perché io non li ho implementato. Questi algoritmi non possono essere facilmente generalizzati in un modo che dovrai semplicemente copiare e incollare e tutto funzionerà. Inoltre mi ci vogliono meno di 5 minuti per scriverli - di solito metto nella mia libreria solo algoritmi che sono difficili da implementare o facili da fare quando li implementano.
- 1. Pianificazione di un concorso
- 2. Approccio corretto al database Java
- 3. Approccio alla progettazione dell'accesso al database Android
- 4. Miglior approccio al test dell'interfaccia utente QT
- 5. Corretto approccio al log globale in Golang
- 6. Prevenire più voti giornalieri in un concorso
- 7. Approccio corretto al rilevamento di funzioni con opencv
- 8. Concorso Twitter ~ salvataggio di tweet (PHP e MySQL)
- 9. Evidenzia al livello di programmazione al clic di UIButton
- 10. Modifica endpoint ReaderQuotas al livello di programmazione
- 11. MapActivity: imposta APIKey al livello di programmazione
- 12. Abilita (installa) al livello di programmazione IIS
- 13. Cambia frammenti al livello di programmazione
- 14. Imposta NSIndexPath al livello di programmazione
- 15. android - impostazione LayoutParams al livello di programmazione
- 16. aggiungere i vincoli al livello di programmazione
- 17. annulla UIAlertView al livello di programmazione
- 18. Creare ShapeDrawable al livello di programmazione
- 19. Cambia tipo UIB al livello di programmazione
- 20. Approccio di programmazione funzionale per flussi di input/output di Java
- 21. Come modificare un DataTemplate al livello di programmazione?
- 22. Blocco di proprietà, buon approccio?
- 23. Allenamento interno: miglior approccio?
- 24. Approccio di validazione in ddd
- 25. WPF - Imposta DataTemplate per GridViewColumns aggiunto al livello di programmazione
- 26. Modulo di login di Drupal al livello di programmazione
- 27. SqlDataAdapter.Fill - Approccio asincrono
- 28. programmazione tornare al frammento precedente nella backstack
- 29. Inizializzazione delle variabili oggetto - un approccio Java, un approccio Python?
- 30. aggiungere annotazioni di dati al livello di programmazione
Forse una soluzione migliore per [codegolf.se]? – mac