Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: aib  (Citit de 1160 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
Andreid91
Client obisnuit
**

Karma: 7
Deconectat Deconectat

Mesaje: 54



Vezi Profilul
aib
« : Noiembrie 18, 2010, 17:18:01 »

Pot folosi AIB-uri  querry/update pt minime? (querry pt interval 1-n)  Nu prea stiu sa fac update-ul cand  inlocuiesc valoarea minima din AIB (mi-a trecut prin minte ceva mult prea naspa ~ log^2 ).   Smile
Memorat
toni2007
Nu mai tace
*****

Karma: 160
Deconectat Deconectat

Mesaje: 663



Vezi Profilul
« Răspunde #1 : Noiembrie 19, 2010, 15:32:28 »

Pe aib poti cauta minimul doar pe intervalul (1, x):

Cod:

void update (int poz, int val) {
    for (; poz <= N; poz += lsb(poz))
        aib[poz] = min(aib[poz], val);
}


Si query-ul :

Cod:
int query (int poz) {
    int ret = inf;
    for (; poz; poz -= lsb(poz))
        ret = min(ret, aib[poz);
    return ret;
}

Memorat
Andreid91
Client obisnuit
**

Karma: 7
Deconectat Deconectat

Mesaje: 54



Vezi Profilul
« Răspunde #2 : Noiembrie 19, 2010, 17:09:59 »

Ok...numai ca in pb-ma apare si cazul in care trebuie sa sterg un element din AIB (il initializez cu  infinit ). Eu daca trebuie sa elimin chiar elementul minim din aib (si sa inlocuiesc cu valoarea infinit), ce valoare pun in AIB[poz] ?  Cum fac update-ul mai exact? Nu credk merge tot aib[poz]=min(aib[poz],val) pt ca valoarea aib[poz] e minimul vechi care trebuie sters, iar val este de fapt infinit...  Neutral Sper ca ma intelegi Very Happy

Mie mi se pare destul de dubios. Credk finalizez cu AI pana la urma  Smile
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

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