Salve a tutti,
Ho scoperto per caso questo sito e, di tanto in tanto, mi diverto a fare qualche problemino per tener allenata la mia anziana mente…
C’è tuttavia qualcosa che mi sfugge, per esempio nel problema delle noccioline. Ai miei occhi c’è poco da fare: iterare l’array e verificare se il secchio corrente ha più o meno delle noccioline dovute: nel primo caso incremento la variabile ExtraP, nel secondo, incremento ExtraM.
Il risultato è del 100% tuttavia i tempi (ma anche di altri problemi) non sono paragonabili a quelli dei maestri jedi. Non so se sbaglio, ma non riesco ad immaginare una soluzione più veloce…
metto il codice giusto per chiarezza, ma mi chiedo, cos’è che mi sfugge??
Grazie 1K a tutti.
int ContaOperazioni(int N, int K, int* secchi)
{
int extraP = 0;
int extraM = 0;
for (int i = 0; i < N; i++)
{
int diff = secchi[i] - K;
if (diff >= 0)
{
extraP += diff;
}
else
{
extraM -= diff;
}
}
return extraP > extraM ? extraP : extraM;
}
Salve, come ha giustamente detto non esiste una soluzione più veloce di quella che ha proposto ed inviando il codice da lei condiviso ho ottenuto come tempo massimo 0.005s che è praticamente minimo, infatti la piattaforma (che io sappia) non restituisce più 0 secondi come tempo d’esecuzione(qualche anno fa lo faceva), in ogni caso direi che la differenza è davvero minima e quindi insignificante.
In generale direi la differenza tra tempi d’esecuzione diventa valida se supera almeno i 100/200ms in base all’esercizio. Senza considerare che in molti casi i tempi d’esecuzione più bassi sono solo dovuti ad ottimizzazioni e non necessariamente ad idee particolarmente intelligenti.
Ciao,
Quindi mi sta dicendo che la classifica che vedo è stata fatta con una metrica di benchmark differente da quella attuale? Se è così è consolante…
Grazie
La metrica è la stessa: per ogni testcase viene eseguita la sua soluzione e viene monitorato il tempo d’esecuzione (il tempo d’esecuzione di un codice viene calcolato come il massimo tempo d’esecuzione per un singolo testcase), la differenza sta nel fatto che le soluzioni che hanno generato i tempi più veloci sono state effettuate qualche anno fa ormai ed all’epoca era possibile ottenere tempo 0.00s. Poi effettivamente non so se è solo una questione di approssimazione del tempo più precisa oppure a causa di un rallentamento dei server ma in ogni caso ora non credo si possano più fare 0.00s.
Sottolineo nuovamente che differenze in tempo così piccole non hanno comunque nessun significato