Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: 022 Paduri de multimi disjuncte  (Citit de 14083 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
filipb
Nu mai tace
*****

Karma: 232
Deconectat Deconectat

Mesaje: 929



Vezi Profilul
« : Decembrie 06, 2008, 19:48:26 »

Aici puteti discuta despre problema Paduri de multimi disjuncte.
Memorat
Mishu91
Nu mai tace
*****

Karma: 169
Deconectat Deconectat

Mesaje: 751



Vezi Profilul
« Răspunde #1 : Decembrie 21, 2008, 09:55:30 »

Imi sugerati niste probleme la care se folosesc multimi disjuncte, pls Very Happy
Memorat
devilkind
Echipa infoarena
Nu mai tace
*****

Karma: 284
Deconectat Deconectat

Mesaje: 1.240



Vezi Profilul
« Răspunde #2 : Decembrie 21, 2008, 10:06:46 »

Voi adauga in enuntul problemei mai multe probleme,intre timp poti incerca curcubeu de pe infoarena si walls de pe sgu (e in primul volum parca)
Memorat
Mishu91
Nu mai tace
*****

Karma: 169
Deconectat Deconectat

Mesaje: 751



Vezi Profilul
« Răspunde #3 : Decembrie 21, 2008, 14:14:39 »

Mersi Tiberiu.

P. S.: Pentru cine e interesat, am mai gasit o problema care se rezolva cu multimi disjuncte, Bile Very Happy
Memorat
CezarMocan
Nu mai tace
*****

Karma: 252
Deconectat Deconectat

Mesaje: 567



Vezi Profilul
« Răspunde #4 : Decembrie 21, 2008, 14:47:07 »

Ar mai fi Mexc, Jstc si problemele in care e nevoie de APM, de exemplu Desen.
Memorat
devilkind
Echipa infoarena
Nu mai tace
*****

Karma: 284
Deconectat Deconectat

Mesaje: 1.240



Vezi Profilul
« Răspunde #5 : Decembrie 21, 2008, 20:24:08 »

Am adaugat in enuntul problemei la aplicatii mai multe probleme care folosesc multimi disjuncte.
Memorat
stinky
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 1



Vezi Profilul
« Răspunde #6 : Decembrie 23, 2008, 13:39:18 »

cred ca ar putea fi adaugata si problema 502 flori (de la oji 2006)
Memorat
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #7 : Aprilie 23, 2009, 00:53:09 »

Testele la această problemă ar trebui refăcute. O sursă care nu foloseşte nici euristica reuniunii după rang nici pe cea a comprimării drumului obţine 100 de puncte.
Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
xtreme
De-al casei
***

Karma: -26
Deconectat Deconectat

Mesaje: 118



Vezi Profilul
« Răspunde #8 : Octombrie 28, 2009, 14:42:34 »

"Asupra acestei abordari putem aplica insa 2 euristici care scad foarte mult timpul de executie:"
Ce inseamna "2 euristici" ??Vrei sa zici "2 metode euristice"?
Asta inseamna ca metoda prezentata da o solutie corecta intotdeauna da nu exista nicio demonstratie oficiala(sau stiuta)?(sau euristicul tau e legat de timpul de executie)
wiki :"In computer science, a heuristic algorithm, or simply a heuristic, is an algorithm that is able to produce an acceptable solution to a problem in many practical scenarios, in the fashion of a general heuristic, but for which there is no formal proof of its correctness."
Si ar trebui schimbat aici:
"Reuniunea dupa rang: Pentru fiecare multime tinem minte inaltimea arborelui care reprezinta acea multime si atunci cand vrem sa unim 2 arbori, il unim pe cel mai mic de cel mai mare."
De fapt uniunea a doi arbori nu depinde de nimic.Putem sa reunim oricum cat timp respecta AUB=C.
Dar probabil autorul vrea sa pastreze pentru fiecare multime limita superioara de rang(sau inaltime), fapt ce il zice mai incolo in enunt.Atunci nu ar fi trebuit scris "Reuniune dupa limitele superioare a rangurilor"?Dar la ce folosesti limitele superioare a ranguriilor?
Pe mine m-a indus in eroare modul "inprecis" in care a fost redactat acest subiect.Normal ca unii zic :-Ce ca se subintelege !, si considera abordarea mea o rea intentie desi nu e deloc asa, dar daca dintr-o propozitie ai de inteles 2 idee care se contrazic nu ai cum sa fii sigur ca cea pe care tu ai considerat-o cea mai probabil de a fii adevarata  e chiar cea adevarata in caz ca nu demonstrezi.

« Ultima modificare: Octombrie 28, 2009, 15:53:04 de către Silaghi Alex » Memorat
pauldb
Nu mai tace
*****

Karma: 821
Deconectat Deconectat

Mesaje: 1.901



Vezi Profilul
« Răspunde #9 : Octombrie 28, 2009, 18:40:24 »

Problema aceasta prezinta multe lipsuri si va fi refacuta integral in viitorul apropiat.
Memorat

Am zis Mr. Green
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #10 : Octombrie 28, 2009, 23:22:55 »

@xtreme: Probabil ca autorul explicatiei a tradus-o din Cormen:

"By using two heuristics, however, we can achieve a running time that is almost linear in the total number of operations m"
Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
devilkind
Echipa infoarena
Nu mai tace
*****

Karma: 284
Deconectat Deconectat

Mesaje: 1.240



Vezi Profilul
« Răspunde #11 : Octombrie 29, 2009, 15:59:58 »

Mda imi cer scuze pentru problemele aparuta la intelegerea solutiei. Am explicat pe limbajul meu si dupa felul in care am inteles eu din cormen. Intr-adevar am crezut ca se subintelege. O sa incerc sa rescriu zilele acestea solutia pe un limbaj mai clar. Inca odata imi cer scuze pentru neplacerile provocate.
Memorat
xtreme
De-al casei
***

Karma: -26
Deconectat Deconectat

Mesaje: 118



Vezi Profilul
« Răspunde #12 : Octombrie 29, 2009, 18:24:06 »

Va multumesc pentru raspunsuri.Iar daca am parut nepoliticos va rog sa ma scuzati. peacefingers
Memorat
johsonsbabi
Strain


Karma: 2
Deconectat Deconectat

Mesaje: 10



Vezi Profilul
« Răspunde #13 : Decembrie 11, 2009, 05:37:22 »

salut, am cautat dar ce am gasit nu a fost pe intelesu meu Smile
daca aveti timp spuneti-mi ce face codu asta, e din sursa oficiala, in special a doua linie... nu am mai intalnit ceva asemanator  Confused

if (find(x) == find(y))   
{fprintf(stderr,"%d ", i);return 0;}


ty
Memorat
Mishu91
Nu mai tace
*****

Karma: 169
Deconectat Deconectat

Mesaje: 751



Vezi Profilul
« Răspunde #14 : Decembrie 11, 2009, 15:07:48 »

Chestia aia îl ajută pe autor la verificarea testelor, mai precis a condiției ca două elemente să nu fie din aceeași mulțime. Poți trece peste linia respectivă, întrucât nu are legătură cu rezolvarea efectivă a problemei.
Memorat
Bit_Master
Vorbaret
****

Karma: -49
Deconectat Deconectat

Mesaje: 159



Vezi Profilul
« Răspunde #15 : Martie 18, 2011, 14:15:39 »

Dar nu putem sa legam de tata nu doar la interogari, ci si la reuniuni (chiar daca radacina se schimba pe urma), ca scurteaza drumul? Oricand parcurgem sa gasim radacina?

Si oricum, iei 100 si fara prima euristica. Adica conteaza atat de mult? Pentru ca oricum cand legi direct de radacina
scurtezi f mult drumul si ce conteaza adancimea unei grupe din moment ce la la prima parcurgere o faci 1?
« Ultima modificare: Martie 18, 2011, 14:31:49 de către Alexandru-Iancu Caragicu » Memorat
Anna_cristina
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 2



Vezi Profilul
« Răspunde #16 : Ianuarie 03, 2012, 15:19:46 »

Buna:)
Am trimis problema asta si nu reusesc sa iau mai mult de 40 de puncte..puteti sa-mi spuneti cum sa o fac mai eficient?

Cod:
#include<fstream>
#include<iostream>
using namespace std;

long v[100005],n,m;

int cauta(long x)
{while(v[x]!=x)
    x=v[x];
 return x;
}

void reun(long x,long y)
{long xx,yy;
 xx=cauta(x);
 yy=cauta(y);
 v[yy]=xx;


int main()
{long i,x,y;
 int cod;
 ifstream f("disjoint.in");
 ofstream g("disjoint.out");
 f>>n>>m;
 for(i=1;i<=n;i++)
   v[i]=i;
 for(i=1;i<=m;i++)
    {f>>cod>>x>>y;
     if(cod==1)  reun(x,y);
       else      if(cauta(x)==cauta(y))  g<<"DA"<<endl;
                    else                 g<<"NU"<<endl;
     }
 f.close();
 g.close();
 return 0;
}
« Ultima modificare: Octombrie 30, 2012, 00:24:53 de către Andrei Grigorean » Memorat
klamathix
Echipa infoarena
Nu mai tace
*****

Karma: 733
Deconectat Deconectat

Mesaje: 1.216



Vezi Profilul
« Răspunde #17 : Octombrie 28, 2012, 22:23:06 »

Ii multumim lui Petru Trimbitas pentru imbunatatirea testelor acestei probleme!  Smile
Memorat
RaduGabriel2012
Strain
*

Karma: 7
Deconectat Deconectat

Mesaje: 26



Vezi Profilul
« Răspunde #18 : Ianuarie 29, 2014, 14:42:39 »

De ce nu se mai pot trimite surse la problema asta ?
Memorat
thinkphp
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 1



Vezi Profilul
« Răspunde #19 : Decembrie 10, 2014, 23:56:42 »

Aici este o portiune de cod desprinsa din programul principal; in urma compilarii primesc mesajul "evaluare completa: 40 de puncte"

    while( M-- ) {

            fin>>type>>x>>y;
           
            if(type == 1) forest.unite(x, y);
 
                      else if( forest.same(x, y) ) fout<<"DA"<<endl;

                                       else       
                                                   fout<<"NU"<<endl; 
    };

Daca modific bucata aceasta de cod usor inlocuind "endl" cu "\n", primesc evaluare completa: 100 de puncte.

    while( M-- ) {

            fin>>type>>x>>y;
           
            if(type == 1) forest.unite(x, y);
 
                      else if( forest.same(x, y) ) fout<<"DA\n";

                                       else       
                                                   fout<<"NU\n"; 
    };
Memorat
SebiSebi
Nu mai tace
*****

Karma: 76
Deconectat Deconectat

Mesaje: 306



Vezi Profilul
« Răspunde #20 : Decembrie 11, 2014, 13:23:37 »

Nu mai folosi endl. Încearcă sa pui '\n' ca sa scapi de TLE.
Memorat
retrograd
Client obisnuit
**

Karma: 3
Deconectat Deconectat

Mesaje: 50



Vezi Profilul
« Răspunde #21 : Iunie 24, 2015, 23:18:11 »

Am o intrebare:

Daca am vizualiza structura ca un arbore, la o operatie de Find(x) cu comprimarea drumului, nu vor fi sterse toate muchiile de pe lantul de la radacina la nod (in afara de cea directa)? In cazul asta, nicio muchie nu va fi vizitata de mai mult de doua ori, deci complexitatea ar trebui sa fie lineara (amortizata cel putin). Imi scapa ceva?
Memorat
SebiSebi
Nu mai tace
*****

Karma: 76
Deconectat Deconectat

Mesaje: 306



Vezi Profilul
« Răspunde #22 : Iunie 25, 2015, 09:06:08 »

Nu chiar. Gândește-te ce se întâmpla când unesti 2 arbori. Dupa unire atunci când faci un Find se poate sa vizitezi anumite muchii pe care le-ai vizitat mai înainte.
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

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