•Marius
|
|
« : Noiembrie 28, 2009, 21:56:20 » |
|
Aici puteţi discuta despre problema Parantezare optima de matrici.
|
|
|
Memorat
|
Faceti lucrurile simplu: pe cat de simplu posibil, dar nu mai simplu.
|
|
|
•Florian
|
|
« Răspunde #1 : Decembrie 04, 2009, 11:59:11 » |
|
E stransa limita de timp sau e busita sursa asta ?
|
|
|
Memorat
|
|
|
|
•pauldb
|
|
« Răspunde #2 : Decembrie 04, 2009, 13:33:49 » |
|
Limita de timp nu este stransa. Sunt destule surse care iau 100 de puncte si intra in sub o secunda.
|
|
|
Memorat
|
Am zis
|
|
|
•Florian
|
|
« Răspunde #3 : Decembrie 10, 2009, 20:31:06 » |
|
Am o nelamurire. Am trimis doua surse: una si a doua. In prima, am declarat bst[512][512] si d[512]. In cea de-a doua am bst[502][502] si d[502]. Timpii de executie sunt cu mult in favoarea celei de-a doua variante ( au scazut de la 1700+ ms la 912 ms pe testul maxim). Nu mai exista nicio deosebire in cele doua surse. Care e faza?
|
|
|
Memorat
|
|
|
|
•pauldb
|
|
« Răspunde #4 : Decembrie 10, 2009, 23:20:25 » |
|
Uite, am trimis si eu o data sursa ta, declarand matricea de 511 pe 511 si a intrat in timp. Tind sa cred ca pe ultimele versiuni la compilatorului, cand declari un vector/matrice de dimensiune 2 x, aloca mai multa memorie decat ar trebui. Cred ca nu e o intamplare izolata, am mai intalnit si eu recent de situatie de acelasi tip.
|
|
|
Memorat
|
Am zis
|
|
|
•Florian
|
|
« Răspunde #5 : Decembrie 11, 2009, 09:06:30 » |
|
Deci cel mai sigur e sa declari fix cat ai nevoie, nu?
|
|
|
Memorat
|
|
|
|
•wefgef
|
|
« Răspunde #6 : Decembrie 11, 2009, 16:20:27 » |
|
Nu cred ca e cea mai buna idee sa declari exact cat ai nevoie, recomand sa pui cu 5-10 mai mult.
|
|
|
Memorat
|
omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
|
|
|
•Bogdan_tmm
|
|
« Răspunde #7 : Decembrie 12, 2009, 03:00:21 » |
|
for(int i=1;i<=30;i++) { a.push_back(i); printf("%d %d\n",a.size(),a.capacity()); } 1 1 2 2 3 3 4 4 5 6 6 6 7 9 8 9 9 9 10 13 11 13 12 13 13 13 14 19 15 19 16 19 17 19 18 19 19 19 20 28 21 28 22 28 23 28 24 28 25 28 26 28 27 28 28 28 29 42 30 42
asta e in visual c++. S-ar putea ca in gcc sa se dubleze de fiecare data memoria alocata. alte cateva exemple mai mari 95 141 142 211 212 316 712 1066 92171 138255 L.E. Asta in cazul in care vectoru e declarat in stl...
|
|
« Ultima modificare: Decembrie 15, 2009, 10:02:53 de către Tarca Bogdan »
|
Memorat
|
|
|
|
|
|
•philip
Strain
Karma: 5
Deconectat
Mesaje: 39
|
|
« Răspunde #10 : Februarie 15, 2010, 20:55:38 » |
|
Nu cred ca ar ajuta mult, avand in vedere ca am de citit maxim 500 de numere. O sa incerc totusi. LE: Nu merge. Exista o solutie mai buna decat O(n 3)? Sau se poate optimiza altcumva?
|
|
|
Memorat
|
|
|
|
•alexandru92
|
|
« Răspunde #11 : Februarie 15, 2010, 21:14:45 » |
|
Exista o solutie NlogN din cate stiu, citeste prin Cormen
|
|
|
Memorat
|
|
|
|
•philip
Strain
Karma: 5
Deconectat
Mesaje: 39
|
|
« Răspunde #12 : Februarie 15, 2010, 21:22:53 » |
|
Exista o solutie NlogN din cate stiu, citeste prin Cormen Nu este, poate confunzi problema cu alta. In Cormen e aceeasi solutie ca cea oficiala de aici.
|
|
|
Memorat
|
|
|
|
|
•philip
Strain
Karma: 5
Deconectat
Mesaje: 39
|
|
« Răspunde #14 : Februarie 15, 2010, 21:44:32 » |
|
Intr-adevar, nu am vazut asta, dar totusi... the optimal triangulation procedure runs in time O(n3)
|
|
|
Memorat
|
|
|
|
•Marius
|
|
« Răspunde #15 : Februarie 15, 2010, 23:01:26 » |
|
Exista o solutie NlogN din cate stiu, citeste prin Cormen Nu există aşa ceva. Oriunde vei găsi O(n 3).
|
|
|
Memorat
|
Faceti lucrurile simplu: pe cat de simplu posibil, dar nu mai simplu.
|
|
|
•blasterz
|
|
« Răspunde #16 : Februarie 15, 2010, 23:43:11 » |
|
Nu cred ca ar ajuta mult, avand in vedere ca am de citit maxim 500 de numere. O sa incerc totusi. LE: Nu merge. Exista o solutie mai buna decat O(n 3)? Sau se poate optimiza altcumva? M-am uitat peste sursa ta si am o întrebare : De ce declari matricea s de 10000 pe 10000 ? Nu trebuia de 501 pe 501 ?
|
|
|
Memorat
|
|
|
|
•philip
Strain
Karma: 5
Deconectat
Mesaje: 39
|
|
« Răspunde #17 : Februarie 15, 2010, 23:54:15 » |
|
M-am uitat peste sursa ta si am o întrebare :
De ce declari matricea s de 10000 pe 10000 ? Nu trebuia de 501 pe 501 ?
Ba da, ai dreptate. Nu stiu de ce am declarat-o asa. Ramane insa problema incadrarii in timp la ultimul test.
|
|
|
Memorat
|
|
|
|
•SpiderMan
|
|
« Răspunde #18 : Octombrie 25, 2010, 14:37:51 » |
|
Am vazut de multe ori aceasta "greseala". Corect este o matrice, doua matrice nu matrici, puteti vedea si in DEX .
|
|
|
Memorat
|
|
|
|
|
•feelshift
Strain
Karma: 0
Deconectat
Mesaje: 2
|
|
« Răspunde #20 : Februarie 16, 2011, 21:49:25 » |
|
In atentia celor ce folosesc pentru valoarea infinit 0x3f3f3f3f: aceasta nu este suficient de mare si primeste WA pe ultimele doua teste (cel putin in cazul meu)
|
|
|
Memorat
|
|
|
|
•cont_teste
Strain
Karma: -2
Deconectat
Mesaje: 10
|
|
« Răspunde #21 : Martie 05, 2013, 23:29:25 » |
|
de ce link-ul catre cartea lui Cormen..este un link catre un site in chineza?
|
|
|
Memorat
|
|
|
|
•claudiumihail
Strain
Karma: 5
Deconectat
Mesaje: 33
|
|
« Răspunde #22 : Septembrie 01, 2013, 06:12:54 » |
|
Salut, Problema asta cica ar avea o rezolvare in n log n (sau n^2), conform mai multor surse. Cea mai relevanta e asta(0). Am incercat sa urmaresc algoritmul din articol si sa-l aplic manual pe niste exemple (exemplul din articol, precum si exemplul de la problema actuala si testul 2 din atasamente; le-am ales pe astea ca sunt simple si pot fi parcurse manual). Nu am putut sa duc pana la capat algoritmul, in sensul ca explicatiile date de autoare sunt pe alocuri insufieciente, cel putin pentru mine. Poate cineva are mai multa sclipire decat mine. E destul de greu de gasit pe net orice informatie despre metoda asta. Sunt curios daca articolul e gresit (s-a dovedit a fi incorect) sau daca exista alt motiv pentru care sunt informatii numai despre metoda clasica in n^3. Oricum interesant de dezbatut asta. Si ca tot veni vorba, poate si asta(1) e interesant/de folos cuiva. Numai bine, Claudiu (0) http://www.cs.ust.hk/mjg_lib/bibs/DPSu/DPSu.Files/0603055.pdf(1) http://codeforces.com/blog/entry/8219
|
|
|
Memorat
|
|
|
|
•S7012MY
|
|
« Răspunde #23 : Septembrie 01, 2013, 23:33:18 » |
|
wow, super tare
LE: Aici nu merge deoarece costul e v[ i ]*v[k]*v[j] si atunci nu se mai pastreaza inegaliteatea indicilor
link-ul de pe uva nu mai merge
|
|
« Ultima modificare: Septembrie 02, 2013, 00:29:06 de către Petru Trimbitas »
|
Memorat
|
|
|
|
•claudiumihail
Strain
Karma: 5
Deconectat
Mesaje: 33
|
|
« Răspunde #24 : Septembrie 02, 2013, 06:27:59 » |
|
Articolul din link-ul cu PDF-ul postat contine in a doua parte (pagina 4 din PDF) un algoritm dedicat pentru matrix chain multiplication. Autoarea pretinde ca ar fi n^2, dupa cum am zis in post-ul precedent. Ideea se bazeaza pe echivalenta problemelor matrix chain multiplication si minimum weight polygon triangulation. Echivalenta dintre aceste doua probleme, ca fapt divers, este prezentata ca un excercitiu si in cartea de probleme a lui Ioan Tomescu (aia din care tot se dadeau mai demult probleme la ONI). Dupa cum am zis, am incercat sa urmaresc algortimul dedicat dar m-am impotmolit pe exemple. PS: Algoritmul state-of-the-art pentru matrix chain multiplication cica ar fi asta: ftp://reports.stanford.edu/pub/cstr/reports/cs/tr/81/875/CS-TR-81-875.pdf , care e in n log n. Din cate am observat e citat intr-o sumedenie de alte articole si ma mira ca nu e explicat nicaieri mai in detaliu (chiar si intr-un curs avansat). N-am stat sa-l diger insa, din moment ce sunt prea varza sa-l pricep macar pe cel in O(n^2) PPS: Petru, am presupus ca macar prima parte din post-ul tau a fost legat de ce am scris eu mai sus .
|
|
« Ultima modificare: Septembrie 02, 2013, 06:39:08 de către Claudiu Mihail »
|
Memorat
|
|
|
|
|