Hw2: consiglio

n
n.rossi (650 points)
3 4 9
asked Nov 6, 2019 in HW2 obbligatorio by n.rossi (650 points)
Non riesco a passare per 0.65 ms il testo 5 ho fatto un dizionario dove ho come chiave il pilota e come valore pilota precedente , successivo e posizione...fatte tutte le eliminazioni e sorpassi alla fine riordino gli indici e ho il risultato finale...altri consigli su come velocizzare o fare?
235 views

1 Answer

E
Edward (25950 points)
2 4 172
answered Nov 7, 2019 by Edward (25,950 points)
La posizione non ti serve, ti puoi tenere il primo e l'ultimo in una chiave del dizionario. In questo modo l'ordinamento alla fine è più efficiente, ed hai meno scambi.

Riduci il numero di scambi al minimo, ed il numero di accessi al dizionario.

PS: facendo così, c'è un'operazione che puoi evitarti quando un pilota si ritira, sta a te capire quale.
n
n.rossi (650 points)
3 4 9
commented Nov 7, 2019 by n.rossi (650 points)
Quindi mi suggerisci di lasciare sempre un dizionario con chiave il pilota e valore precedente e successivo , e mettere un' altra chiave che contiene il primo e l'ultimo pilota?
E
Edward (25950 points)
2 4 172
commented Nov 7, 2019 by Edward (25,950 points)
Sì, puoi provare così. Per la lista finale ti basta scorrere dal primo all'ultimo e risparmi tempo.

Io facendo così ero riuscito a passare tutti i test dopo aver ridotto gli scambi e l'accesso al dizionario al minimo
n
n.rossi (650 points)
3 4 9
commented Nov 7, 2019 by n.rossi (650 points)
Si ma se la chiave contiene solo primo e ultimo valore come fai a riordinarli tutti
E
Edward (25950 points)
2 4 172
commented Nov 7, 2019 by Edward (25,950 points)
Ho letto male. Io intendo una chiave per il primo, ed una per l'ultimo.

Tu di ogni pilota sai chi è il suo precedente no? Quindi cosa ci vuole ad ordinarli una volta che sai chi è il primo?
n
n.rossi (650 points)
3 4 9
commented Nov 7, 2019 by n.rossi (650 points)
Quindi dizionario con chiave pilota e valore una tupla precedente e successore , e altre due chiavi una contenente il primo e una l'ultimo..alla fine fai un ciclo sul dizionario ti prendi il primo pilota e vai a prenderti quello che lo segue e ti popoli la griglia finale diciamo
E
Edward (25950 points)
2 4 172
commented Nov 7, 2019 by Edward (25,950 points)

valore una tupla precedente e successore

Le tuple non sono modificabili.

Per ridurre il numero di operazioni al minimo conviene usare una lista

g
gian.uni (1510 points)
3 6 11
commented Nov 7, 2019 by gian.uni (1,510 points)
io non riesco ad ottimizzare più di così,per i sorpassi effettuo 6 operazioni in totale e per le eliminazioni effettuo 2 operazioni nel peggiore dei casi,ma niente vado fuori di 0,30s,questo solo sulla VM,sul mio computer li passo tutti.Consigli?