Problema Classifica Senza Fili (oii_classifica)

Salve, è da circa 3 giorni che provo a risolvere il problema della classifica senza fili, ma come mi sembra giusto che sia, in 4 dei 7 subtask del testcase va in time out.

Ciò che presumo dia questo problema del timeout è la funzione di squalifica che ha una complessità di O(2N) nel caso peggiore dato che svolge prima una ricerca lineare per eliminare il partecipante dalla classifica, e poi effettua l’eliminazione tramite l’erase e quindi un’altra ricerca lineare.

So che ancora è un problema uscito da pochi giorni sulla piattaforma e che in pochi l’hanno risolto, ma sto davvero impazzendo sul come risolverlo. (Attualmente sono a 34/100)

1 Mi Piace

Non so quale sia la soluzione più semplice da scrivere, però con un approccio simile al problema Vasi dovresti fare qualche punto in più! :slight_smile:

Mhhh, mai svolto il problema Vasi, quindi non riesco a seguirti sinceramente ahah :joy:

La soluzione ottimale penso che richieda l’utilizzo di un range tree, così da eseguire in O(logN) la funzione squalifica
L’altra soluzione proposta da @VashTheStampede credo sia la square root decomposition, più semplice e ti fa comunque ottenere qualche punto in più di 34 :slight_smile:

Un metodo alternativo è quello di Vasi2 (ovviamente in versione semplificata).

Alberi binari bilanciati

Oops, chiedo venia :innocent:

@filippos e di che? :joy:

Un altro metodo carino e semplice da implementare (sebbene leggermente più lento del range tree, nella sua implementazione più banale) è l’utilizzo di un albero di Fenwick per memorizzare gli squalificati precedenti una data posizione :slight_smile:

1 Mi Piace