Editorial for Polsko Cveke
Submitting an official solution before solving the problem yourself is a bannable offence.
Prvo ćemo preračunati niz , čiji
-ti član označava najdesnije pojavljivanje elementa
u nizu
.
Iteriraćemo po poziciji pojavljivanja prvog elementa u paternu
s leva na desno. Pretpostavimo da se trenutno nalazimo na poziciji
i da je
. Za drugo pojavljivanje elementa
u paternu
koristićemo element na poziciji
(u slučaju
ovu poziciju nećemo dalje razmatrati). Nema potrebe uzimati neko ranije pojavljivanje vrednosti
posle pozicije
jer na taj način samo smanjujemo prostor za uzimanje prve vrednosti u paternu.
Sada smo zadatak sveli na pronalaženje najmanje vrednosti
, takve da se
pojavljuje u intervalu
i u intervalu
. Ovaj problem možemo rešiti pomoću segmentnog stabla:
- Izračunajte još jedan pomoćni niz
, gde u
-tom trenutku vrednost
predstavlja prvo desno pojavljivanje elementa
u nizu
nakon pozicije
. Ako se element
nije pojavio do pozicije
ili ne postoji element
nakon pozicije
, tada je
. Nama je rešenje za trenutnu poziciju najmanje
takvo da
i
.
Za navedeni niz možemo napraviti minimum segmentno stablo (svaki čvor pamti minimum za sve elemente u odgovarajućem intervalu). Izvršićemo šetnju po stablu dok ne dođemo do lista koji nam predstavlja rešenje za trenutnu poziciju. Pod šetnjom podrazumevamo sledeći proces:
- Počećemo iz korena segmentnog stabla
- Ako trenutni čvor obuhvata interval [l, r], videćemo vrednost u njegovom levom detetu (ta vrednost predstavlja minimum u intervalu
, ako je ona manja od
idemo u levo dete, inače idemo u desno.
- Ako smo stigli do lista, završili smo proces i našli smo rešenje za tu poziciju (ako smo stgli do
lista onda ne postoji rešenje).
Napomena: Treba biti pažljiv prilikom šetnje zbog uslova , postoji više načina kako to može da se reši.
Nakon pomeranja sa pozicije na poziciju
u nizu
, potrebno je promeniti jednu vrednost u nizu
, ujedno promeniti odgovarajuću vrednost i u segmentnom stablu.
Asimptotska složenost navedenog rešenja .
Zadatak je preuzet sa
, takmičenje
.
Comments