Jetoane2
Problema se rezolva prin programare dinamica. Vom considera 2 matrici:
- Ai, j = 1 daca intervalul de jetoane dintre pozitiile i si j poate fi eliminat, sau 0, altfel.
- Bi, j, k = 1 daca intre pozitiile i si j se poate plasa al k-lea cuvant si se poate elimina tot intervalul, sau 0, altfel.
Astfel Bi, j k = 1 daca si numai daca exista un p ∈ [i, j], astfel incat:
- Cuvk, l = Sirp+l, ∀ 1 ≤ l ≤ Lungk
- Ai, p-1 = A (i+Lung{k}) , j = 1
Sirp+l reprezinta sirul initial, Cuvk, l reprezinta a l-a litera din al k-lea cuvant si Lungk, lungimea acestuia. Dinamica se va calcula, crescator, dupa lungimea intervalului [i, j]. Daca ∃ k astfel incat Bi, j, k = 1, atunci Ai, j = 1.
Dupa determinarea valorilor lui A si cum scorul depinde exclusiv de intervalele [i, j] ce pot fi eliminate, se va aduna la rezultat suma ponderilor de pe toate intervalele [i, j] cu Ai, j = 1.
Complexitatea solutiei este O(N * L3 * CONST), unde L reprezinta lungimea sirului initial, iar CONST = 10.
Exista si o solutie de complexitate O(N * L3), care, in practica, merge mai repede. Aceasta solutie a fost data de catre Cosmin Gheorghe si o voi publica imediat dupa ce primesc acordul sau.