infoarena

infoarena - concursuri, probleme, evaluator, articole => Algoritmiada 2016 => Subiect creat de: Mihai Calancea din Ianuarie 24, 2016, 09:42:03



Titlul: Revsecv
Scris de: Mihai Calancea din Ianuarie 24, 2016, 09:42:03
Aici se pot pune întrebări legate de problema Revsecv (http://www.infoarena.ro/problema/revsecv) de la Runda 2 (http://www.infoarena.ro/algoritmiada-2016/runda-2) a concursului Algoritmiada 2016 (http://www.infoarena.ro/algoritmiada-2016).


Titlul: Răspuns: Revsecv
Scris de: Bodnariuc Dan Alexandru din Ianuarie 24, 2016, 12:17:03
ce se intelege prin disjuncte? disjuncte ca si string ? sau ca si pozitii?

gen ababa

pozitile 1-3 si 3-5 sunt ok (adica coincid) ??


Titlul: Răspuns: Revsecv
Scris de: Mihai Calancea din Ianuarie 24, 2016, 12:19:23
Disjuncte ca pozitii, se vede din relatiile dintre indici enuntate inainte de explicatia informala.


Titlul: Intrebare
Scris de: Linca Razvan Cosmin din Ianuarie 24, 2016, 13:41:51
Rezultatul corect la exemplul dat nu este cumva 15,in loc de 16?


Titlul: Răspuns: Revsecv
Scris de: Popa Andrei din Ianuarie 24, 2016, 13:49:55
Rezultatul din exemplu este corect.


Titlul: Răspuns: Revsecv
Scris de: Patrick Sava din Ianuarie 24, 2016, 13:51:35
Se considera in rezultat si secventele de o litera ?


Titlul: Răspuns: Revsecv
Scris de: Popa Andrei din Ianuarie 24, 2016, 13:53:18
DA


Titlul: Răspuns: Revsecv
Scris de: Razvan-Andrei Ciocoiu din Ianuarie 26, 2016, 22:22:04
Ma poate ajuta cineva cu o idee de rezolvare? M-am gandit la suffix arrays, dar nu vad nici asa cum as putea scoate mai putin de O(N^2).


Titlul: Răspuns: Revsecv
Scris de: Mihai Calancea din Ianuarie 26, 2016, 22:31:35
Mergi pe ideea cu Suffix Arrays. Gândește-te în primul rând cum rezolvi problema dacă nu se pune restricția ca subsecvențele să fie disjuncte ca indici.


Titlul: Răspuns: Revsecv
Scris de: Razvan-Andrei Ciocoiu din Ianuarie 27, 2016, 16:52:15
Ma gandesc asa: combin sirul normal cu sirul reversed despartite de un caracter si construiesc suffix array-ul. Parcurg in ordine descrescatoare sufixele (de exemplu) si ma intereseaza suma tuturor LCP-urilor dintre sirul curent si cele de sub el, pe care o adun la solutie. La schimbarea indexului, va trebui sa modific LCP-urile de dedesubt, si am nevoie de inca o structura de date care sa-mi spuna cate valori mai mari decat o anumita valoare am si sa le transforme pe toate intr-o anumita valoare. M-am gandit aici la un arbore de intervale cu lazy update.
Indexul va fi intotdeauna pe un sufix al sirului reversed, iar suma LCP-urilor o voi lua doar din cele care apartin sirului normal.

S-ar putea sa ma complic tare, dar asta e ideea la care am ajuns.

Totusi, nu-mi dau seama inca cum voi elimina solutiile care nu sunt disjuncte. :sad:


Titlul: Răspuns: Revsecv
Scris de: George Marcus din Ianuarie 27, 2016, 19:15:04
Eu nu stiu solutia, dar partea aia mi se pare cea mai simpla. Solutiile care nu sunt disjuncte apar la palindroame. Pentru fiecare centru de palindrom poti gasi o formula.