Pagini: [1] 2 3 4   În jos
  Imprimă  
Ajutor Subiect: 036 Cutii  (Citit de 22931 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
fluffy
Echipa infoarena
De-al casei
*****

Karma: 71
Deconectat Deconectat

Mesaje: 146



Vezi Profilul
« : Aprilie 01, 2004, 00:36:45 »

Aici puteţi discuta despre problema Cutii.
Memorat
LordAnta
Strain
*

Karma: 2
Deconectat Deconectat

Mesaje: 43



Vezi Profilul
« Răspunde #1 : Noiembrie 17, 2004, 20:31:30 »

Cutiile pe care le alegem trebuie a fiu in ordinea data in fisier sau putem sorta sirul dat??? Question
Memorat

Lord Anta, over and out!!!
SergiuH
Strain


Karma: -8
Deconectat Deconectat

Mesaje: 9



Vezi Profilul
« Răspunde #2 : Noiembrie 18, 2004, 00:05:55 »

Daca vrei sa torturezi procesorul cu calcule inutile, poti sa nu le sortezi. Eu nu prea vad o solutie in timp fara o sortare.
Memorat
LordAnta
Strain
*

Karma: 2
Deconectat Deconectat

Mesaje: 43



Vezi Profilul
« Răspunde #3 : Ianuarie 13, 2005, 13:10:27 »

Mai da-ti va rog un test  la problema ca incepe sa ma enerveze!!!
Memorat

Lord Anta, over and out!!!
faust
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 1



Vezi Profilul
« Răspunde #4 : Februarie 25, 2005, 02:46:37 »

Imi merge pentru orice test de-al meu. Si totusi 0 puncte.  Sad
Va rog, macar 1-2 teste sa ma verific.
Memorat
alexjj
Vizitator
« Răspunde #5 : Februarie 25, 2005, 11:46:28 »

se pare ca solutia foloseste fie AIB(arbori indexati binari) fie arbori de intervale. prima metoda pentru cazul de 3 dimensiuni foloseste N^3 memorie (3500 * 3500 * 3500 !) si are complexitate logn ^3 adica, pentru 3500 cam N/2 (nimic mai bun decat dinamica clasica);

la arbori de intervale mie greu sa vad o implemenare pentru 3 dimensiuni.
Memorat
domino
Echipa infoarena
Nu mai tace
*****

Karma: 281
Deconectat Deconectat

Mesaje: 1.340



Vezi Profilul WWW
« Răspunde #6 : Februarie 25, 2005, 13:06:33 »

Citat din mesajul lui: alexjj
se pare ca solutia foloseste fie AIB(arbori indexati binari) fie arbori de intervale. prima metoda pentru cazul de 3 dimensiuni foloseste N^3 memorie (3500 * 3500 * 3500 !) si are complexitate logn ^3 adica, pentru 3500 cam N/2 (nimic mai bun decat dinamica clasica);

la arbori de intervale mie greu sa vad o implemenare pentru 3 dimensiuni.


Pai sortezi dupa prima dimensiune si ai redus la 2 dimensiuni. N^2 memorie acum ai nevoie, se poate si mai putin cu un hash.
Memorat
Cosmin
Echipa infoarena
Nu mai tace
*****

Karma: 351
Deconectat Deconectat

Mesaje: 1.799



Vezi Profilul
« Răspunde #7 : Februarie 25, 2005, 17:03:35 »

Problema se poate rezolva in O(n) memorie si O(N sqrt(n)) timp daca folositi KD trees.
Memorat
alexjj
Vizitator
« Răspunde #8 : Februarie 25, 2005, 18:05:29 »

doar miam dat cu parerea din infimele mele cunostinte de info ....
Memorat
Cosmin
Echipa infoarena
Nu mai tace
*****

Karma: 351
Deconectat Deconectat

Mesaje: 1.799



Vezi Profilul
« Răspunde #9 : Februarie 25, 2005, 19:12:47 »

Vrem sa te ajutam deci nu are rost sa te oftici.
Ideea la rezolvarea problemei e urmatoarea:
  Sortezi dupa z cutiile, acuma daca ai o cutie de indice i si una de indice j cu i < j atunci cutia i se poate cuibari in cutia j daca x < x[j] si y < y[j]. O rezolvare in O(n^2) ar fi simpla cu programare dinamica, astfel best ar fi lungimea celui mai lung sir de cutii cuibarite in care cutia din exterior e cutia i, dar o asemenea rezolvare e clar ca nu ar intra in timp.  best = max(best[j] | j<i , x[j] < x , y[j] < y) + 1 Pentru a rezolva problema ne gandim la dimensiunile cutiilor x si y ca niste puncte in plan iar la best ca si valoarea punctelor respective si asa am ajuns la o  problema de range search (adica o cautare pe intervale). Deci problema noastra se transforma in folosirea unei structuri de date ce contine puncte si valori pentru puncte, in care putem insera puncte si putem raspunde repede la intrebari de genul care este valoarea maxima a unui punct din structura noastra cu proprietatea ca x_punct < x_dat si y_punct < y_dat. Pentru ca dimensiunile cutiilor sunt in intervalul 1 .. N putem folosi pentru asta structura de AIB bidimensional, cu query time de O(log^2 n). Alte structuri care le-am putea folosi ar fi arbori de intervale, quad trees sau kd trees, toate trei structuri de date folosite in rezolvarea problemelor de ortogonal range search (cautare pe domenii ortogonale).
Memorat
LordAnta
Strain
*

Karma: 2
Deconectat Deconectat

Mesaje: 43



Vezi Profilul
« Răspunde #10 : Februarie 25, 2005, 20:12:44 »

Tot ce trebuie sa faci la problema e sortare crescatoare dupa care aplici subsir crescator maximal!!! Si am luat 100 asa!!!
Memorat

Lord Anta, over and out!!!
greco
Nu mai tace
*****

Karma: 144
Deconectat Deconectat

Mesaje: 434



Vezi Profilul
« Răspunde #11 : Februarie 25, 2005, 20:17:19 »

Da, numai ca unii nu fac pentru puncte ci pentru a invata ceva util...
Daca stii programarea aia dinamica penala mai bine faci AIB in 2 dimensiuni... e mai util.  Shocked
Memorat

Jump in the cockpit and start up the engines
Remove all the wheelblocks there's no time to waste
Gathering speed as we head down the runway
Gotta get airborne before it's too late.
Cosmin
Echipa infoarena
Nu mai tace
*****

Karma: 351
Deconectat Deconectat

Mesaje: 1.799



Vezi Profilul
« Răspunde #12 : Februarie 25, 2005, 21:45:15 »

Da am si eu un prieten care a luat 100 asa, dar asta probabil pentru ca testele nu sunt perfecte ... depinde cum ai optimizat programul, e foarte greu sa dai teste la o problema si sa stii sigur ca numai solutia inteligenta poate lua punctaj mare iar bulanelile sa ia sub 50 de puncte si de aia rezolvari ca a ta se mai strecoara cateodata,  daca se mai intampla  sa faci o problema grea fara sa prinzi ideea buna bravo tie, dar daca te bazezi pe genu asta de rezolvari la ONI nu cred ca o ai prea  mult de castigat.
Memorat
alexjj
Vizitator
« Răspunde #13 : Februarie 27, 2005, 18:15:16 »

apreciez mult explicatia. trec la implementare imediat !
Memorat
alexjj
Vizitator
« Răspunde #14 : Februarie 27, 2005, 22:14:52 »

am implementat. deci :

1. sortez dupa x (nare importanta, nu ?);

2. incepand de la cea mai mica valoare tratez pe portiuni avand acelasi x si prima data calculez maximul ce se poate obtine cu fiecare (interogand cu y-1,z-1)  apoi trebuie sa adaug si portiunea aceasta de x la AIB.
si matricea ar trebui initializata cu zero caci pot sa am ceva de genu 1 2 2,   2 1 1 ,  3 3 3  shi maximul ar fi 3, daca se tot aduna la AIB.

si cand interoghez calculez max_obtinut_pentru_portiunea_precedenta + interogare (y-1,z-1). shi eviden nu intra in timp datorita initializarii cu 0 (not even with memset Think ).

 Brick wall
Memorat
domino
Echipa infoarena
Nu mai tace
*****

Karma: 281
Deconectat Deconectat

Mesaje: 1.340



Vezi Profilul WWW
« Răspunde #15 : Februarie 27, 2005, 22:50:15 »

Citat din mesajul lui: alexjj
am implementat. deci :

1. sortez dupa x (nare importanta, nu ?);

2. incepand de la cea mai mica valoare tratez pe portiuni avand acelasi x si prima data calculez maximul ce se poate obtine cu fiecare (interogand cu y-1,z-1)  apoi trebuie sa adaug si portiunea aceasta de x la AIB.
si matricea ar trebui initializata cu zero caci pot sa am ceva de genu 1 2 2,   2 1 1 ,  3 3 3  shi maximul ar fi 3, daca se tot aduna la AIB.

si cand interoghez calculez max_obtinut_pentru_portiunea_precedenta + interogare (y-1,z-1). shi eviden nu intra in timp datorita initializarii cu 0 (not even with memset Think ).

 Brick wall


Pai curatarea nu o faci cu memset ca ar fi N^2 ci faci aceeasi functie de update doar ca de data asta curata... N*lg N deci.
Memorat
VladS
Vizitator
« Răspunde #16 : Februarie 27, 2005, 23:13:38 »

Chiar nu e nevoie de AIB, RMQ etc,; ia 100 si solutia naiva de la subsir daca sortezi mai intii.
Memorat
Cosmin
Echipa infoarena
Nu mai tace
*****

Karma: 351
Deconectat Deconectat

Mesaje: 1.799



Vezi Profilul
« Răspunde #17 : Februarie 27, 2005, 23:49:50 »

Tu ai vazut ce am zis de bulaneli mai sus?
Memorat
cristy
De-al casei
***

Karma: 2
Deconectat Deconectat

Mesaje: 136



Vezi Profilul
« Răspunde #18 : Martie 23, 2005, 15:33:29 »

auziti..ce i-ati facut la algoritmul ala de subsir crescator ca mie imi iese din timp...deci complexitatea este este n^2, nu? cel putin asa e la sirul clasic... (cam numa pe ala il stiu Brick wall ) si asta face pt 3500 de elemente in 6 secunde si ceva...daramite pt 100 de astfel de determinari  Rolling Eyes  deci..imi explicati si mie pls cum se face, ca la un incepator cum sunt...va rog sa ma scuzati Mr. Green
Memorat

... lipsa de inspiratie ...
VladS
Vizitator
« Răspunde #19 : Martie 23, 2005, 17:14:34 »

La subsir e complexitatea e n*(n-1)/2.
Memorat
Sergiu
Strain


Karma: 1
Deconectat Deconectat

Mesaje: 6



Vezi Profilul
« Răspunde #20 : Martie 23, 2005, 17:35:46 »

Complexitatea la subsir e n*(n-1)/2 dar se poate reduce destul de mult daca se foloseste un vect. auxiliar in care pe pozitia v se memoreaza lungimea maxima a subsirului gasit pana atunci. Si se foloseste acest vect. pt a opri al doilea for  la timp.  Si in felul acesta ies 100 pct fara nici un arbore indexat binar.
Memorat
Cosmin
Echipa infoarena
Nu mai tace
*****

Karma: 351
Deconectat Deconectat

Mesaje: 1.799



Vezi Profilul
« Răspunde #21 : Martie 23, 2005, 18:46:01 »

Pt subsir crescator de lungime maxima exista algoritmi de complexitate O(n log n), pentru un asemenea algoritm poti sa te uiti in cartea lui Francu "Psihologia concursurilor de programare".
Memorat
cristy
De-al casei
***

Karma: 2
Deconectat Deconectat

Mesaje: 136



Vezi Profilul
« Răspunde #22 : Martie 23, 2005, 19:17:26 »

multumesc sergiule, mi s-a "repezit" mult programul...da tot nu am suta...tot 40...da ms oricum...
Memorat

... lipsa de inspiratie ...
VladS
Vizitator
« Răspunde #23 : Martie 23, 2005, 19:27:47 »

Pacat ca nu am cartea.

Cosmin, poti pune undeva pe forum subsir in  n log n sau sa imi trimiti un e-mail. Te rog.
Memorat
Sergiu
Strain


Karma: 1
Deconectat Deconectat

Mesaje: 6



Vezi Profilul
« Răspunde #24 : Martie 23, 2005, 20:16:04 »

Eu am luat 100 pct. cu aceasta optimizare si cu sortare quicksort, dar daca foloseam sortare liniara iesea si mai rapid.
Memorat
Pagini: [1] 2 3 4   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines