Diferente pentru siruri-de-sufixe intre reviziile #32 si #33

Nu exista diferente intre titluri.

Diferente intre continut:

Autorii au incercat sa adune cat mai multe probleme ce pot fi rezolvate cu ajutorul sirurilor de sufixe. Parcurgerea tuturor problemelor la prima citire, ar putea fi greoaie pentru un cititor care a avut primul contact cu aceasta structura de date citind acest articol. Pentru a usura lectura problemele sunt asezate intr-o ordine crescatoare a dificultatilor.
h3. *Problema 1*: _Parola ascunsa_ (acm 2003, enunt modificat)
h3. *Problema 1*: '_Parola ascunsa_':https://www.spoj.pl/problems/BEADS/ (acm 2003, enunt modificat)
Consideram un sir de caractere de lungime $n$ $(1 ≤ n ≤ 100000)$. Sa se determine rotatia lui cilculara lexicografic minima. De exemplu, rotatiile sirului de caractere $alabala$ sunt:
$alabala$
Sirul cautat este prima permutare circulara in ordine lexicografica a sirului dat. Notam cu $S{~i~}^k^$ substringul de lungime $k$ ce incepe la pozitia $i$. Fie $S{~i~}^n^$ cel mai mic substring in ordine lexicografica de lungime $n$ al sirului obtinut prin concatenare.  Presupunand prin absurd ca $s(i+n-1) < n$ ar insemna ca exista un $i'$ $(i < i' &le; j)$ astfel incat $S{~i'~}^j-i'+1^$ este lexicografic mai mic decat $S{~i~}^n^$. Dar din conditia impusa de enunt avem $S{~i'~}^j-i'+1^ > S{~i'~}^n^$. Dar $S{~i'~}^n^ > S{~i~}^n^$ => contradictie.
Desi exista un algorirm de complexitate $O(n)$ specializat pentru siruri ce contin doar literele $A$ si $B$, metoda preferata de autor (si cu care a obtinut punctaj maxim in timpul concursului) a fost folosirea sirurilor de sufixe, ca in problema anterioara.
h3. *Problema 3*: _Substr_ (baraj 2003)
h3. *Problema 3*: '_Substr_':http://infoarena.ro/problema/substr (baraj 2003)
Se da un text format din $N$ caractere (litere mari, litere mici si cifre). Un substring al acestui text este o secventa de caractere care apar pe pozitii consecutive in text. Fiind dat un numar $K$, sa se gaseasca lungimea celui mai lung substring care apare in text de cel putin $K$ ori $(1 &le; N &le; 16384)$.
Aceasta problema ne cere, de fapt, sa calculam numarul de noduri (fara radacina) ale trie-ului de sufixe asociat unui string. Fiecare secventa distincta din sir este determinata de drumul unic pe care il parcurgem in trie-ul de sufixe cand cautam acea secventa. Pentru exemplul $abac$ avem secventele $a$, $ab$, $aba$, $abac$, $ac$, $b$, $ba$, $bac$ si $c$, acestea sunt determinate  de drumul de la radacina trieului spre nodurile $2$, $3$, $4$, $5$, $6$, $7$, $8$ si $9$ in aceasta ordine. Cum constructia trie-ului de sufixe are complexitate patratica, iar construirea unui arbore de sufixe este anevoioasa, este preferabila o abordare prin prisma sirurilor de sufixe. Obtinem sirul sortat de sufixe in $O(n lg n)$, dupa care cautam pozitia in care fiecare pereche de sufixe consecutive difera (folosind functia $lcp$) si adunam la solutie restul caracterelor. Complexitatea totala este $O(n lg n)$.
h3. *Problema 5*: _SETI_ (ONI 2002, enunt modificat)
h3. *Problema 5*: '_SETI_':http://infoarena.ro/problema/seti (ONI 2002, enunt modificat)
Se da un string de lungime $N$ $(1 &le; N &le; 131072)$ si $M$ stringuri de lungime cel mult $64$. Se cere sa se numere aparitiile fiecarui string din cele $M$ in stringul mare.

Nu exista diferente intre securitate.

Topicul de forum nu a fost schimbat.