infoarena

infoarena - concursuri, probleme, evaluator, articole => Arhiva de probleme => Subiect creat de: Mircea Pasoi din Februarie 21, 2005, 19:53:33



Titlul: 045 Subsir
Scris de: Mircea Pasoi din Februarie 21, 2005, 19:53:33
Aici puteţi discuta despre problema Subsir (http://infoarena.ro/problema/subsir).


Titlul: 045 Subsir
Scris de: Gogu Marian din Martie 18, 2005, 18:02:29
am luat de mai multe ori 80 p la problema asta si pana la urma mi-am dat seama ca problema era de la citire:

while not eoln(f) do
 begin
 inc(n);
 read(f,a[n]);
 end;
readln(f);
while not eoln(f) do
  begin
  inc(m);
  read(f,b[m]);
  end;
while not (a[n] in ['a'..'z']) do dec(n);
while not (b[m] in ['a'..'z']) do dec(m);

Scuze pentru cod, dar dupa ce am adaugat ultimele 2 linii am luat 100. De ce? E o chestie de linux? Nu vad ce ar putea sa fie specific la testele 6 si 9 parca. Clarificati-ma si pe mine daca puteti.


Titlul: 045 Subsir
Scris de: VladS din Martie 23, 2005, 13:48:28
Matricea Nr[][] cu ce o initializezi?


Titlul: 045 Subsir
Scris de: Gogu Marian din Martie 23, 2005, 14:32:08
nr[i,j]=1 daca a[i,j]=1 si x=y[j] altfel calculezi


Titlul: 045 Subsir
Scris de: Kelemen Stelian din Martie 24, 2005, 12:20:52
cum ai  facut aici ?? "daca exista pozitiile x si y astfel incat A
  • = A = B[y] = B[j], se aduna Nr[j] doar daca x < i si y < j"


Titlul: 045 Subsir
Scris de: Gogu Marian din Martie 24, 2005, 13:21:39
Sa zicem ca sirurile tale sunt a si b de lungime n si m.
Am verificat daca i si j sunt ultimele pozitii la care apare caracterul a in sirurile tale, lucru care il faci in O(1) adica ai pa[n,a]=i si pb[m,b[j]], pa[i,c] este ultima aparitie a caracterului c in primele i caractere ale lui a(la fel si pt pb). Atunci adaugi nr[i,j] la rezultat.


Titlul: 045 Subsir
Scris de: Bondane Cosmin din Mai 08, 2005, 12:28:29
la exemplu ala dat in problema, restu' nu ii 0?? #-o


Titlul: 045 Subsir
Scris de: Bindea Calin din Mai 08, 2005, 13:47:40
Pai singurul subsir de lungime maxima e "ana" deci ai 1 subsir.
Restul impartirii lui 1 la 666013 e 1 :)
adica 1 / 666013 = 0 , rest 1
cu alte cuvinte, 1 = 0 * 666013 + 1
 :mrgreen:


Titlul: 045 Subsir
Scris de: Toma Radu din Iunie 24, 2005, 14:59:16
Daca rezultatul il obtin insumand toate valorile nr[j] calculate, asta nu inseamna ca adun toate subsirurile comune si nu numai cele de lungime maxima?

mai trebuie pusa si conditia ca c[j] = lmax, unde lmax e lungimea subsirului comun maximal.


Titlul: 045 Subsir
Scris de: Toma Radu din Iunie 26, 2005, 22:45:55
am facut cu matricea nr[j] a numarului de subsiruri comune de lungime maxima si primesc WA la testul 9. Mi-l puteti da si mie sa vad ce am gresit?


Titlul: 045 Subsir
Scris de: Toma Radu din Iunie 30, 2005, 15:33:54
NU vreau sa par enervant, dar cred ca am implementat bine ( avand in vedere ca am luat 90 de pcte ) dar tot nu iau testu 9. Ii ceva special la el?


Titlul: 045 Subsir
Scris de: Silviu-Ionut Ganceanu din Iunie 30, 2005, 19:27:35
Ce test pici ?


Titlul: 045 Subsir
Scris de: cristi8 din Iunie 30, 2005, 19:29:13
Citat din mesajul lui: tm_radu
testu 9


Titlul: 045 Subsir
Scris de: Silviu-Ionut Ganceanu din Iulie 01, 2005, 08:23:00
Pe testul 9 (l-am rulat la mine pe calculator) programul tau afiseaza un numar negativ (!!?).

M-am uitat pe sursa si, probabil, e de la faptul ca faci modulo doar la urma, rezultatele intermediare putand depasi long int. Aceasta problema se rezolva transformand toate operatiile din operatii "normale" in operatii "modulo" numarul dat.

Spor la treaba!

Silviu


Titlul: 045 Subsir
Scris de: Toma Radu din Iulie 02, 2005, 22:17:11
Mersi. am luat 100. Raman dator cu o bere  :D


Titlul: 045 Subsir
Scris de: Andrei Grigorean din Iulie 22, 2005, 17:58:46
imi da si mie cineva un alt test va rog? cel din enunt e prea simplu...


Titlul: 045 Subsir
Scris de: u-92 din Iulie 27, 2005, 16:20:05
la problema asta fac asa: adun nr[j] cand a=b[j] si lg[j]=lgmax si use[a]=0; pe use[a] il fac 1.. adica o singura data pot sa am caracterul 'a' pe ultima pozitie a unui sir maxim.. si iau doar 40
poate sa ma ajute cineva? nu-mi dau seama de eroarea din algoritm


Titlul: 045 Subsir
Scris de: Toma Radu din Iulie 29, 2005, 18:04:16
uite un exemplu :

Cod:
subsir.in
abcabcaa
acbacba


Cod:
subsir.out
7


Titlul: 045 Subsir
Scris de: u-92 din Iulie 31, 2005, 10:23:03
tot 7 imi da si mie


Titlul: 045 Subsir
Scris de: Cosmin Negruseri din Iulie 31, 2005, 11:11:58
Vezi ca a fost o problema similara la CEOI parca in 2003, nu mai tin minte exact, ai putea folosi testele de acolo ca sa vezi daca iti merge solutia pe ele.


Titlul: 045 Subsir
Scris de: u-92 din Iulie 31, 2005, 13:31:51
am modificat putin sursa si am pus conditia cu ultima aparatie, conditia pusa inainte era gresita.. si toate testele de la ceoi le iau.. sa vad acum cand revine evaluatorul ce se intampla
totusi.. iau doar 70, pic testele 7, 8 si 9 #-o


Titlul: 045 Subsir
Scris de: Rus Cristian din Februarie 10, 2006, 11:29:42
am citit solutia oficiala, dar nu am inteles o kestie, cu ce se initializeaza matricea Nr? adica, am vazut ca la un moment dat, aduni Nr[ii][jj] la Nr[j], dar daca Nr[ii][jj]=0, ce faci?


Titlul: 045 Subsir
Scris de: Marius Stroe din Februarie 10, 2006, 11:36:56
Citat

nr[i,j]=1 daca a[i,j]=1 si x=y[j] altfel calculezi


A zis gogu mai sus!  :P


Titlul: 045 Subsir
Scris de: Rus Cristian din Februarie 10, 2006, 11:43:18
scuze...am scris fara sa citesc...ce era inainte, da tot nu am inteles, x si y sunt sirurile A si B?


Titlul: 045 Subsir
Scris de: Marius Stroe din Februarie 10, 2006, 22:39:58
nr[j] = 1 daca cmls[j] = 1 si A = B[j], altfel calculezi cum zice in solutia oficiala   :wink:


Titlul: Răspuns: 045 Subsir
Scris de: Ionescu Vlad din Mai 13, 2007, 12:50:20
Imi spuneti va rog daca pentru exemplul:

Citat
abcabcaa
acbacba

Matricea Nr arata in felul urmator:

Cod:
1 1 1 1 1 1 1
1 1 1 0 0 1 0
1 1 0 0 1 0 0
1 0 0 2 0 0 1
1 0 1 0 0 3 0
1 1 0 0 3 0 0
1 0 0 1 0 0 6
1 0 0 1 0 0 7

Multumesc.


Titlul: Răspuns: 045 Subsir
Scris de: Adrian Diaconu din Mai 13, 2007, 14:21:00
La mine arata:
Cod:
1 0 0 1 0 0 1 
0 0 1 0 0 1 0
0 1 0 0 1 0 0
1 0 0 2 0 0 1
0 0 1 0 0 3 0
0 1 0 0 3 0 0
1 0 0 1 0 0 6
1 0 0 1 0 0 7
dar eu am calulat doar pentru perechile (i,j) pentru care s1(i)==s2(j) deoarece doar de ele aveam nevoie. In rest am pus 0 deci este cam acelasi lucru cu a ta.


Titlul: Răspuns: 045 Subsir
Scris de: Ionescu Vlad din Mai 13, 2007, 18:50:47
Multumesc! am luat pana la urma 100.


Titlul: Răspuns: 045 Subsir
Scris de: Ciocan Andrei din Aprilie 09, 2008, 16:23:39
Ahhhhhhhhh... de ce imi da WA doar pe al 9-lea test????
Doar am calculat mereu rezultatul partial in modulo 666013


Titlul: Răspuns: 045 Subsir
Scris de: Ciocan Andrei din Aprilie 09, 2008, 16:35:07
Aici am sursa comentata


Titlul: Răspuns: 045 Subsir
Scris de: Adrian Diaconu din Aprilie 09, 2008, 17:14:29
Vad ca nu ai pus peste tot modulo. Cand calculezi nr[ i ][ j ] trebuie sa pui si acolo modulo pentru ca pot fi si ele foarte mari.

Si alta data nu mai posta de 2 ori consecutiv (foloseste edit / modifica)


Titlul: Răspuns: 045 Subsir
Scris de: Ciocan Andrei din Aprilie 09, 2008, 17:51:43
asta era.mersi :)


Titlul: Răspuns: 045 Subsir
Scris de: alexandru catalisan din Martie 11, 2009, 12:23:22
pai nu iei fiecare litera si cauti si urm in sirul b?


Titlul: Răspuns: 045 Subsir
Scris de: George Popoiu din Ianuarie 11, 2010, 21:01:17
Iau 70pct, si ma chinui de 4 ore la problema asta.  ](*,) Pe tesul acesta imi da matricea Nr la fel ca celor care au mai postat inaintea mea.

Cod:
subsir.in
abcabcaa
acbacba

Iau WA pe testele 4,5 si 9. Problema cred ca este la calcularea solutiei. Matricea Nr cred ca o calculez bine. Am citit si pe forum si in aricolu cu solutii, dar nu prea am inteles cum sa determin solutia.

Imi puteti explica? Multumesc anticipat!

P.S: Eu determin solutia parcurgand matricea Nr, si iau cel mai mare Nr[ i ][j] pentru care cmls[ i ][j]=lungimea celui mai lung subsir comun si                a[ i ]==b[j] , si ma indoiesc ca e corect...


L.E. : Am rezolvat, era de la calcularea solutiei.