ciao ragazzi, sapete dirmi quali regole devo applicare per verificare quali cifre cancellare dai totali di bilancio?
L’osservazione chiave è che indipendentemente dalle cifre che tolgo il numero finale avrà lunghezza N-K.
A questo punto bisogna domandarsi: com’è composto questo numero?
Partiamo da questa idea: tra tutti i numeri naturali lunghi N-K, qual è quello minore?
Ovviamente 000...0, ma io ho delle limitazioni che quasi sempre mi impediscono di generare quel numero.
Perciò partiamo da questa considerazione: se ho un numero del tipo C... dove C è la prima cifra della sua rappresentazione, indipendentemente da quello che viene dopo io dovrò minimizzare C in quanto è il maggiore responsabile della grandezza del mio numero.
Ma C va cercato nel mio numero iniziale U, e in particolare una volta trovato C dobbiamo cancellare da U tutte le cifre prima di C.
A questo punto non dovresti trovare difficoltà a continuare il ragionamento.
Beh si noi in realtà l’abbiamo sviluppato su un’altra base sempre funzionante, magari meno efficiente… Resta il fatto che l’unico problema che riscontriamo ora é far si che il vettore salvato su output.txt corrisponda al numero, perché ci fa mezzi salvataggi giusti e mezzi sbagliati. Siamo a buon punto comunque fortunatamente altri algoritmi li abbiamo trovati infinitamente più semplici!
Grazie del tempo prestatoci!
Il mio codice dovrebbe avere una complessità di (N-K)*K… E ovviamente gli ultimi subtask sforano con il tempo. Una buona soluzione per questo problema che complessità potrebbe avere? Cosi magari mi viene qualche idea per migliorare il codice. Grazieee
Il mio è O(K)
Comunque credo che con il tuo stesso algoritmo sfruttando un Segment Tree dovresti scendere a O(KlogN)