Titlul: 840 Cuburi3 Scris de: Airinei Adrian din Aprilie 05, 2009, 11:27:24 Aici puteti discuta despre problema Cuburi3 (http://infoarena.ro/problema/cuburi3).
Titlul: Răspuns: 840 Cuburi3 Scris de: Cosmin din Aprilie 05, 2009, 19:48:39 Sal. La probl asta iau eroarea "Killed by signal 11(SIGSEGV)". Din c cauza? Am o coada de 2.000.000 d elemente cu 2 campuri de tip long si in mod normal dupa calculele mele ar intra...dar coada este subdimensionata...asa ca nu stiu exact cauza: am coada subdimensionata si incerc sa folosesc niste zone d memorie care nu exista sau depasesc memoria? ( mai am si alte variabile sau vectori, dar in total acestea nu depasesc 100000 Kb)
Titlul: Răspuns: 840 Cuburi3 Scris de: chisinau gheorghita din Aprilie 05, 2009, 20:00:42 Ai prea multa memorie 2 * 2 mil = 4 mil....cam mult :P
Titlul: Răspuns: 840 Cuburi3 Scris de: Florian Marcu din Aprilie 08, 2009, 15:50:06 Fac problema cu dinamica in O(n^2), cu memoizare. Iau TLE pe testul 10. Fac cam asa:
Citat pt fiecare i=1,n , daca !memo[ i ] atunci calc(i). iar calc(i) arata cam asa:Citat int calc(int i) { daca (memo[ i ]) return memo[ i ]; pt (j=1;j<=n;++j) daca(j!=i && j se poate pune deasupra lui i) { x = calc(j); daca(x>max) max = x; } memo[ i ] = max + l[ i ]; return max; } Bineinteles, ca mai am doi vectori, unul care imi retine numarul de turnuri, iar celalalt pentru reconstructia drumului. Este cineva care a luat 100 in acest fel? Ce optimizare as putea face ca sa intre in timp? Titlul: Răspuns: 840 Cuburi3 Scris de: Marius Stroe din Aprilie 08, 2009, 16:04:48 Fac problema cu dinamica in O(n^2), cu memoizare. Iau TLE pe testul 10. Fac cam asa: Soluţia cu memoizare nu obţine 100p. Încearcă Varianta 2 (http://infoarena.ro/grigore-moisil-2009/solutii#cuburi3), sau chiar Varianta 3 ;) Titlul: Răspuns: 840 Cuburi3 Scris de: Florian Marcu din Aprilie 08, 2009, 20:57:31 Ar trebui specificat lucrul asta in articolul cu solutii. Desi prima data mi-a venit in gand ideea de la varianta 2, cand m-am uitat pe articolul cu solutii, am observat ca solutia data in varianta 1 e mult mai usor de implementat... Dar se pare ca nu e optima... :)
Titlul: Răspuns: 840 Cuburi3 Scris de: gaboru corupt din Aprilie 20, 2009, 20:59:53 Am o problema la afisarea indiciilor cuburilor care formeaza turnul. La testele mari imi afiseara cateva cuburi in plus la inceputul fisierului, restul fiind bune.
Cod: int k = 0; poz_max = la inceput e pozitia maximimului turnului sol[ i ] = inaltimea maxima care are ca ultim element cubul i Titlul: Răspuns: 840 Cuburi3 Scris de: Florian Marcu din Aprilie 20, 2009, 21:03:21 Nu ar trebui sa ai poz_max = pre[poz_max] (sau cv de genu)? Adica elementul de pe care "s-a venit" in poz_max pt a obtine acel sol[ poz_max ] . La tine sol[] e inaltime, iar poz_max e pozitie. Am inteles eu gresit?
Titlul: Răspuns: 840 Cuburi3 Scris de: gaboru corupt din Aprilie 20, 2009, 21:07:04 Scuze, nu m-am exprima eu bine. sol[ i ] e tatal din care se ajunge in i cum zici tu. :aha:
Titlul: Răspuns: 840 Cuburi3 Scris de: Alexandru-Iancu Caragicu din Februarie 16, 2011, 18:43:57 Ce legatura are problema asta cu Subsir crescator maximal? (ca acolo se face referire la ea)
Titlul: Răspuns: 840 Cuburi3 Scris de: Simoiu Robert din Februarie 16, 2011, 19:17:41 Citeste solutia oficiala si ai sa vezi legatura.
Titlul: Răspuns: 840 Cuburi3 Scris de: FII Florea Toma Eduard din Martie 07, 2011, 00:43:20 Am o intrebare pentru cei carora li s-a mai intamplat sa ia WA pe ultimele 7 teste....care era bugul? Mentionez ca folosesc varianta a 2-a din solutia oficiala,cea a subsirului crescator maximal de complexitate O(n^2).Multumesc anticipat!
L.E:Never mind....am luat suta :). Titlul: Răspuns: 840 Cuburi3 Scris de: UAIC.VlasCatalin din August 26, 2011, 14:10:44 Nu inteleg de ce iau numai primele doua teste, inteleg TLE pe ultimul, dar nu inteleg de ce iau incorect pe celelalte, fac PD O ( n^2 ), si pe exemplele mele merge bine, ma poate ajuta cineva, pls ? ](*,)
Titlul: Răspuns: 840 Cuburi3 Scris de: George Marcus din August 26, 2011, 14:21:59 Cum sa te ajute lumea? Sa ghiceasca ce ai gresit? Posteaza si tu ceva cod sau descrie-ti solutia.
Ai grija la sortare (cand una dintre dimensiuni e egala cum faci cu cealalta), acelasi lucru si la subsirul crescator. Titlul: Răspuns: 840 Cuburi3 Scris de: UAIC.VlasCatalin din August 26, 2011, 14:40:10 Uite codul:
code: begin assign(fi,'cuburi3.in'); assign(fo,'cuburi3.out'); settextbuf(fi,b1); settextbuf(fo,b2); reset(fi); rewrite(fo); readln(fi,n); for i:=1 to n do begin readln(fi,a[ i ].l,a[ i ].g); a[ i ].ind:=i; end; qsort(1,n); j:=0; for i:=1 to n do if a[ i ].l=a[i+1].l then inc(j) else if j>0 then begin qsort2(i-j,i); j:=0; end; b[n].h:=a[n].l; b[n].pos:=n; b[n].nr:=1; b[n].ind:=a[n].ind; max2:=b[n].h; posmax2:=n; for i:=n-1 downto 1 do begin max:=0; posmax:=i; for j:=i+1 to n do if (a[ j ].g<=a[ i ].g) and (b[ j ].h>max) then begin max:=b[j].h; posmax:=j; end; b[ i ].h:=a[ i ].l+max; b[ i ].pos:=posmax; b[ i ].nr:=b[posmax].nr+1; b[ i ].ind:=a[ i ].ind; if b[ i ].h>max2 then begin max2:=b[ i ].h; posmax2:=i; end; end; writeln(fo,b[posmax2].nr,' ',b[posmax2].h); j:=posmax2; repeat writeln(fo,b[j].ind); dec(b[posmax2].nr); j:=b[j].pos; until b[posmax2].nr=0; close(fo); end. Cimpurile tabloului a sunt : l=latura, g=greutatea, ind=numarul de ordine cum apare in sirul initial; Cimpurile tabloului b sunt : h=inaltimea maxima a turnului la baza caruia se afla elementul i; pos=pozitia din care s-a format maximul respectiv; nr= cite cuburi formeaza turnul respectiv; ind= pozitia cubului in sirul initial, cam asta. :) LE: S-a rezolvat, uitasem sa fac ceea ce e insemnat cu rosu, o greseala mica dar care te costa 80 de puncte :annoyed: Titlul: Răspuns: 840 Cuburi3 Scris de: George Marcus din August 26, 2011, 15:53:39 Presupun ca ordonezi valorile in ordine descrescatoare. Cred ca ar trebui un posmax:=0; (sau vreo pozitie a vectorului care ia valoarea 0 tot timpul) dupa max:=0; la fiecare iteratie a lui i. Daca nu ma insel, pici astfel de teste:
Cod: 4 P.S. 2: In mijlocul unui cuvant se scrie â din a, nu î din i P.S. 3: Treci la C. Edit: Aa, exact cand am scris ai corectat :) Titlul: Răspuns: 840 Cuburi3 Scris de: Mihai Visuian din Noiembrie 29, 2011, 18:39:44 la mine da la testul tau 2 3
2 1 Dar punctajul meu e ca all lui ctlin Titlul: Răspuns: 840 Cuburi3 Scris de: Mihai Visuian din Noiembrie 29, 2011, 18:44:47 observati ceva in neregula in codul meu?? in afara de ultimul TLE...
Cod: for ( i = 1; i <= n; i++ ) Titlul: Răspuns: 840 Cuburi3 Scris de: Alexandru-Iancu Caragicu din Ianuarie 23, 2012, 18:56:27 Citeste solutia oficiala si ai sa vezi legatura. msTitlul: Răspuns: 840 Cuburi3 Scris de: Vidrean Mihai din Februarie 29, 2012, 18:43:49 Imi puteti spune de ce iau WA inafara de 2 teste ](*,).Am facut o structura in care am retinut lungimea,greutatea si indicele initial.Am sortat crescator structura dupa latura sau daca e latura egala dupa greutate .Dupa am facut subsir crescator maximal de la capat incoace si dupa reconstitui solutia,pe care o afisez in ordine inversa.
Cod: #include<cstdio> Titlul: Răspuns: 840 Cuburi3 Scris de: Oncescu Costin din Iunie 22, 2012, 17:39:32 Eu am facut solutia cu AIB dar mai exact am folosit arbori de intervale.
In fine am luat 70,toate variabilele declarate in int.Imi mergeu testele 1,2,3,4,5,6,7; Apoi am pus toate variabilele declarate in long long.Si imi merg testele 1,2,3,4,5,7,8,pe ultimul TLE; NU INTELEG DE CE.Teoretic nu ar trebui bagate in long long si oricum nu inteleg de ce dupa o modificare ca astanu imi mai merge testul 6,nu are logica,Mi-am dat o groaza de teste toate imi merg.Ma poate ajuta cineva? ??? Titlul: Răspuns: 840 Cuburi3 Scris de: Pirtoaca George Sebastian din Iunie 22, 2012, 17:48:26 Da, intradevar nu trebuie long long, insa este destul de ciudat ce se intampla. Nu trebuie neaparat sa folosesti AIT , merge si in complexitate patratica foarte repede deoarece n <= 4000. Incearca asa si vedem pa urma ce se intampla.
Titlul: Răspuns: 840 Cuburi3 Scris de: Tudorica Andrei din Ianuarie 17, 2013, 16:22:31 iau 80p cu 2 WA si nu imi dau seama de ce. Vreo idee? :D
Titlul: Răspuns: 840 Cuburi3 Scris de: George Marcus din Ianuarie 17, 2013, 16:24:02 Pot fi si egale dimensiunile (latura sau/si greutatea).
Titlul: Răspuns: 840 Cuburi3 Scris de: Tudorica Andrei din Ianuarie 17, 2013, 17:55:55 Multumesc! :guns:
Titlul: Răspuns: 840 Cuburi3 Scris de: FMI Razvan Birisan din Februarie 03, 2013, 09:09:27 Pentru
Cod: 20 R: Cod: 11 74 ??? Titlul: Răspuns: 840 Cuburi3 Scris de: Pirtoaca George Sebastian din Februarie 03, 2013, 09:32:08 Da. E corect.
Titlul: Răspuns: 840 Cuburi3 Scris de: FMI Razvan Birisan din Februarie 03, 2013, 09:52:28 Nu înțeleg. ???
Sortez cuburi după greutate și apoi determin cel mai lung subșir descrescător. Iau 30p cu WA. Cod: 10 R: Cod: 1 10 Titlul: Răspuns: 840 Cuburi3 Scris de: Pirtoaca George Sebastian din Februarie 03, 2013, 09:57:01 Principiul e corect. Incearca rezolvarea in O(N2), fara AIB sau AINT, care ia 100p. Succes!
Titlul: Răspuns: 840 Cuburi3 Scris de: FMI Razvan Birisan din Februarie 03, 2013, 16:05:41 Cel mai mare subșir descrescător cu programare dinamică.
Cod: void Sdmax() Tot 30p. :o Titlul: Răspuns: 840 Cuburi3 Scris de: George Marcus din Februarie 03, 2013, 16:16:04 Cand faci dinamica, trebuie sa compari atat latura cat si greutatea.
Titlul: Răspuns: 840 Cuburi3 Scris de: Pirtoaca George Sebastian din Februarie 03, 2013, 16:17:44 El sorteaza crescator dupa greutate, deci nu mai e nevoie de a doua comparatie. :ok:
L.E. Nu imi dau seama ce ar putea fi gresit. Daca nu reusesti sa revolvi pana la urma, da-mi un PM si iti dau sursa mea. Titlul: Răspuns: 840 Cuburi3 Scris de: George Marcus din Februarie 03, 2013, 16:38:04 Vezi ca tu trebuie sa cauti turnul cu suma laturilor maxima, nu cu numarul maxim de cuburi.
Titlul: Răspuns: 840 Cuburi3 Scris de: Popescu George din Ianuarie 10, 2014, 12:13:37 Imi poate sugera si mie cineva un test (altul fata de cele precizate la comentariile anterioare :D) . Am facut problema dupa varianta 2 de la solutie, dar iau doar 30p..
Cod: for (i=1;i<=n;++i) |