In che modo la programmazione competitiva è diversa da quella della vita reale?
Sei nella giungla. Avete un coltello tascabile. Qualcuno vi chiede di uccidere un leone di montagna. Chiunque, tranne un programmatore, chiederebbe: "Che ci fa un leone di montagna in una giungla?", ma questo non è ciò che sei stato addestrato a fare come programmatore. Siete qui per risolvere i problemi, non per metterli in discussione.
Anni di formazione vi hanno insegnato bene. Usate il vostro coltello per affilare un bastone. Tagliate delle viti per legare delle pietre affilate a un'estremità. Forse vieni da un'università prestigiosa e hai imparato a estrarre gli ingredienti essenziali dalla vita delle piante e degli insetti che ti circondano per creare un veleno con cui puntare la tua arma.
Convinto di avere un modo efficace ed efficiente per uccidere il leone, ti metti all'opera per portare a termine il tuo compito. Forse il tuo bastone è troppo corto, o i tuoi veleni non funzionano. Va bene - vivi per perfezionare il tuo metodo e riprovare un altro giorno.
Poi qualcuno trova il modo di creare un esplosivo di bassa qualità raccogliendo sostanze chimiche nella giungla. Il tuo metodo di fabbricare una lancia per uccidere il leone non è più il modo migliore per svolgere il tuo compito. Tuttavia, è ancora un modo semplice, e continuerà ad essere insegnato nelle scuole. Ad ogni uccisore di leoni verrà insegnato come costruire i suoi strumenti da zero.
Questa è la programmazione "reale".
Nella programmazione competitiva, si inizia con le stesse risorse (un coltello tascabile), solo che si hanno 2 minuti per uccidere il leone.
Da principianti, si fissa il leone e non si fa nulla.
Presto si impara che se si uccide uno scoiattolo, a volte il giudice pensa che sia un leone e si può andare avanti.
Un programmatore più esperto continua a pugnalare il leone e spera che il leone muoia in tempo. Presto si impara che ci sono certi punti su un leone che sono immuni ai danni. Si impara a non preoccuparsi nemmeno di pugnalare quei punti. A volte, il leone non espone quei punti, così si diventa molto bravi a uccidere gli scoiattoli.
E poi, per essere un grande programmatore competitivo, bisogna essere in grado di fare due cose.
In primo luogo, bisogna imparare a trovare il punto critico del leone e ucciderlo con un solo colpo.
Secondo, dovete imparare ad essere così abili con il vostro coltello che potete fabbricare un bastone affilato in 1 minuto, e passare il minuto successivo a pugnalare il leone a morte.
Ma mai e poi mai sarete in grado di avere abbastanza tempo per fabbricare un esplosivo per far fuori il leone.
Articoli simili
- Perché la tastiera del telefono ha quella in alto mentre quella della calcolatrice ha quella in basso?
- Che cos'è esattamente "stamparlo modulo 10^9 + 7" nei siti web di programmazione competitiva?
- Come posso iniziare con la programmazione competitiva?
- Quali strutture di dati e algoritmi di base si dovrebbero imparare prima di iniziare la programmazione competitiva?