•pauldb
|
|
« : Decembrie 05, 2010, 13:49:50 » |
|
Aici puteţi discuta despre problema Secvdist.
|
|
|
Memorat
|
Am zis
|
|
|
•eudanip
|
|
« Răspunde #1 : Decembrie 05, 2010, 13:56:40 » |
|
In concurs am luat 90 pct iar acuma 100 cu aceeasi sursa. Ma oftic dar ce pot sa zic. Sa incercati sa rezolvati si voi problema asta cu evaluatorul.
|
|
|
Memorat
|
|
|
|
•eudanip
|
|
« Răspunde #2 : Decembrie 05, 2010, 14:15:23 » |
|
Am vazut ca ati reevaluat. Multumesc .
|
|
|
Memorat
|
|
|
|
•bogdan2412
|
|
« Răspunde #3 : Decembrie 05, 2010, 14:24:32 » |
|
Am vazut ca ati reevaluat. Multumesc . Nu inteleg de ce s-a intamplat asta. Acum oricat de mult reevaluez iei 100. Daca mai are cineva aceeasi problema cu vreuna din problemele de la runda asta, sa spuna cat de curand.
|
|
« Ultima modificare: Decembrie 05, 2010, 14:36:04 de către Bogdan-Cristian Tataroiu »
|
Memorat
|
|
|
|
•bent_larsen
Strain
Karma: 1
Deconectat
Mesaje: 18
|
|
« Răspunde #4 : Decembrie 05, 2010, 14:33:32 » |
|
Cu NlogN mai mult de 60 de pct nu se putea lua ? Eu credeam ca intra sigur in timp.
|
|
|
Memorat
|
|
|
|
•andrei.12
|
|
« Răspunde #5 : Decembrie 05, 2010, 14:40:03 » |
|
Solutia comisiei de complexitate O(NlogN) ia tot 60 de puncte. Solutia oficiala a problemei are complexitate O(N).
|
|
|
Memorat
|
|
|
|
•elfus
Client obisnuit
Karma: 77
Deconectat
Mesaje: 96
|
|
« Răspunde #6 : Decembrie 05, 2010, 14:54:45 » |
|
Buna ziua , as fi interesat de rezolvarea oficiala O(N). Se va posta in viitor un articol oficial cu solutia comisiei? Multumesc anticipat.
|
|
|
Memorat
|
|
|
|
|
•vladtarniceru
|
|
« Răspunde #8 : Februarie 27, 2011, 21:35:35 » |
|
am si eu o intrebare: rezolvarea cu deque e buna si intra la limita nu? (adica eu am luat prima data 90, apoi am retrimis aceeasi sursa si am luat 100)
|
|
|
Memorat
|
|
|
|
•Florian
|
|
« Răspunde #9 : Februarie 27, 2011, 21:58:34 » |
|
Depinde de implementare. Mie mi-a intrat in cca 0.4 sec. Oricum, rezolvarea corecta e cu deque.
|
|
|
Memorat
|
|
|
|
•PlayLikeNeverB4
|
|
« Răspunde #10 : Februarie 27, 2011, 22:42:24 » |
|
Nu e la limita deloc.
|
|
|
Memorat
|
|
|
|
•maritim
|
|
« Răspunde #11 : Mai 15, 2011, 18:23:02 » |
|
Ok ... nu inteleg. Imi poate explica cineva ce este gresit la rezolvarea mea va rog ? int solve(void) { Deckmin[1] = A[1]; //vectorul unde se pastreaza max Deckmax[1] = A[1]; //vectorul unde se pastreaza min int c = 1; Pmin[1] = 1; //vectorul unde editez lungimile secventei pentru deque min Pmax[1] = 1; //vectorul unde editez lungimile secventei pentru deque max for(int i=2;i<=N;i++) { Backmin ++; while(Backmin>=Frontmin && Deckmin[--Backmin] > A[i]); Deckmin[++Backmin] = A[i]; Pmin[Backmin] = ++c; Backmax ++; while(Backmax>=Frontmax && Deckmax[--Backmax] < A[i]); Deckmax[++Backmax] = A[i]; Pmax[Backmax] = c; if(Deckmax[Frontmax]-Deckmin[Frontmin]>K) { if(Frontmin == Backmin) { while(Deckmax[++Frontmax]-Deckmin[Frontmin]>K); c -= Pmax[Frontmax]; } else { while(Deckmax[Frontmax]-Deckmin[++Frontmin]>K); c -= Pmin[Frontmin]; } c ++; } if(MAX<c) MAX = c; } return 0; } L.E. : ... ulterior mi-am dat seama ca incercarea mea de rezolvare este utopica. Distantele dintre secvente se calculeaza altfel, deque-ul e bun .
|
|
« Ultima modificare: Mai 15, 2011, 20:33:53 de către Lambru Andrei Cristian »
|
Memorat
|
|
|
|
•danalex97
|
|
« Răspunde #12 : Mai 05, 2012, 12:28:27 » |
|
Un sfat ... Faceti deque fara STL la probleme de acest gen.
|
|
|
Memorat
|
|
|
|
•ctlin04
|
|
« Răspunde #13 : Mai 05, 2012, 18:57:05 » |
|
Va rog uitativa cineva pe sursa mea si ajutatima sa vad ce imi scapa, pe toate testele mele merge bine insa evaluatorul imi da numai 10 puncte, restul incorect Cod: Program secvdist; type tip1=record v,p:longint; end; tip=array [0..1000000] of tip1; var a:array [0..1000000] of longint; b1:array [1..1 shl 17] of char; min,max:tip; i,j,n,k,l,c1,c2,co1,co2,sol:longint; fi,fo:text; procedure introdu(var b:tip; x:longint; op:byte); begin if op=1 then begin if x<b[co1].v then begin inc(co1); b[co1].v:=x; end else begin while (co1>=c1) and (x>=b[co1].v) do dec(co1); inc(co1); b[co1].v:=x; end; b[co1].p:=i; end else begin if x>b[co2].v then begin inc(co2); b[co2].v:=x; end else begin while (co2>=c2) and (x<=b[co2].v) do dec(co2); inc(co2); b[co2].v:=x; end; b[co2].p:=i; end; end; procedure schimba; begin if i-l>sol then sol:=i-l; while max[c1].v-min[c2].v>k do if max[c1].p<min[c2].p then inc(c1) else inc(c2); if max[c1].p<min[c2].p then l:=max[c1].p else l:=min[c2].p; end; begin assign(fi,'secvdist.in'); assign(fo,'secvdist.out'); settextbuf(fi,b1); reset(fi); rewrite(fo); readln(fi,n,k); for i:=1 to n do read(fi,a[ i ]); l:=1; c1:=1; c2:=1; co1:=1; co2:=1; min[c1].v:=a[1]; max[c1].v:=a[1]; min[1].p:=1; max[1].p:=1; for i:=2 to n do begin introdu(max,a[ i ] ,1); introdu(min,a[ i ] ,0); if max[c1].v-min[c2].v>k then schimba; end; if i-l+1>sol then sol:=i-l+1; write(fo,sol); close(fo); end.
|
|
« Ultima modificare: Mai 06, 2012, 14:50:46 de către Mihai-Alexandru Dusmanu »
|
Memorat
|
|
|
|
•danalex97
|
|
« Răspunde #14 : Mai 07, 2012, 17:37:35 » |
|
Am facut destul de recent problema , dar mi se pare ca e un detaliu nesemnificativ ce gresesti tu. Incearca sa "reimplementezi". Daca nu iti iese trimite-mi un pm si iti dau sursa mea daca iti e de folos. ( lucrez in C++ dar sursa e fara stl ) PS: Vezi ca iti trebuie 2 deque. Succes .
|
|
|
Memorat
|
|
|
|
•ctlin04
|
|
« Răspunde #15 : Mai 08, 2012, 13:58:29 » |
|
Defapt eu tin 2 dequuri unul este min, iar celalalt e max, dar mi se pare ca as putea gresi cind reactualizez solutia in procedura schimba, dequul trebue sa fie bun, problema e ca nu gasesc nici un test care sa-mi dea un rezultat gresit, ms pentru raspuns As fi recunoscator daca totusi mi-ai trimite sursa la adresa [email protected], ms anticipat
|
|
|
Memorat
|
|
|
|
•idomiralin
Strain
Karma: 0
Deconectat
Mesaje: 15
|
|
« Răspunde #16 : Septembrie 27, 2012, 11:45:27 » |
|
As avea si eu o nelamurire:
Nu inteleg de ce iau TLE pe testul 9, desi am facut solutia optima cu 2 deque-uri fara stl. Am facut inainte si cu stl si iau TLE pe testul 10. Daca stie cineva care ar putea fi problema, as fi recunoscator.
|
|
|
Memorat
|
|
|
|
•wefgef
|
|
« Răspunde #17 : Septembrie 29, 2012, 14:47:46 » |
|
Am modificat limita de timp, ar trebui sa intre acum.
|
|
|
Memorat
|
omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
|
|
|
•idomiralin
Strain
Karma: 0
Deconectat
Mesaje: 15
|
|
« Răspunde #18 : Octombrie 01, 2012, 16:38:21 » |
|
A intrat acuma. Mersi wefgef!
|
|
|
Memorat
|
|
|
|
|