Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: 1090 Rk  (Citit de 1869 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« : Decembrie 13, 2010, 00:36:14 »

Aici puteti discuta despre problema Rk.
Memorat

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

Karma: -463
Deconectat Deconectat

Mesaje: 937



Vezi Profilul
« Răspunde #1 : Decembrie 14, 2010, 15:47:04 »

Stie careva alta metoda decat cea cu trie ? Multumesc .
Memorat
pauldb
Nu mai tace
*****

Karma: 821
Deconectat Deconectat

Mesaje: 1.901



Vezi Profilul
« Răspunde #2 : Decembrie 14, 2010, 19:13:12 »

    Hashing (+parsare?) ar fi o varianta. O alta varianta (copyright Dan Spatarel) ar fi:

    1. Consideri toti cei 32 de biti ai unui numar din sirul dat si il oglindesti in baza 2. De exemplu: 110 => 0110...0[/li]
2. Sortezi vectorul obtinut anterior.
3. Pentru un query (r k), il consideri pe r in baza 2 si il oglidesti normal. Adaugi 0 la finalul numarului pana cand acesta are k biti. Cauti folosind o cautare binara cate valori exista intre numarul obtinut anterior completat cu 0 pana 32 de biti si numarul obtinut anterior completat cu 1 pana la 32 de biti. Exemplu pentru r = 10 si k = 6. Scriem pe r in baza 2: (1010). Il oglindim si obtinem 0101. Completam cu 2 de 0 astfel incat sa avem 6 biti: 010100. Cautam cate numere avem in vector intre 0101000...0 si 0101001..1.

Daca analizezi putin operatiile descrise, vei intelege de ce solutia este corecta.
Memorat

Am zis Mr. Green
freak93
Echipa infoarena
Nu mai tace
*****

Karma: 342
Deconectat Deconectat

Mesaje: 819



Vezi Profilul
« Răspunde #3 : Decembrie 14, 2010, 20:46:39 »

In concurs am bagat radix sort(pentru fiecare bit) si dupa fiecare pas al soratarii o parcurgere cu 2 indici, ca sa determin raspunsul pentru fiecare query. Sper sa-i foloseasca cuiva
« Ultima modificare: Decembrie 14, 2010, 21:53:50 de către Budau Adrian » Memorat
SpiderMan
Nu mai tace
*****

Karma: -463
Deconectat Deconectat

Mesaje: 937



Vezi Profilul
« Răspunde #4 : Decembrie 14, 2010, 21:00:57 »

As avea o intrebare : pentru cautarea binara pot sa fac doar o cautare, sau trebuie doua ( daca merge cu una ai putea sa mi-o arati ? ) . Merci.
[LE] : Am facut cum mi-ai zis, am tinut intr-o matrice char *A[..] numerele, am facut doua cautari binare, dar iau 60 puncte, cu 4 TLE. Ce as putea optimiza? Merci.
[LLE] : Mi-am dat seama , merci oricum Smile
« Ultima modificare: Decembrie 15, 2010, 16:44:31 de către Simoiu Robert » Memorat
Teodor94
Echipa infoarena
Nu mai tace
*****

Karma: 63
Deconectat Deconectat

Mesaje: 558



Vezi Profilul
« Răspunde #5 : Decembrie 19, 2010, 20:11:33 »

si eu iau tot 60 puncte cu 4 tle.ce e de optimizat la program?
Memorat
SpiderMan
Nu mai tace
*****

Karma: -463
Deconectat Deconectat

Mesaje: 937



Vezi Profilul
« Răspunde #6 : Decembrie 19, 2010, 22:20:47 »

Tine numerele ca si unsigned int, nu ca si char, deoarece sortarea si cumparatiile merg mai repede ( <, > sau = merge mai repede decat strcmp sau memcmp ) .
Memorat
alexandru70
Strain


Karma: -7
Deconectat Deconectat

Mesaje: 20



Vezi Profilul
« Răspunde #7 : Septembrie 26, 2013, 11:32:15 »

Un lucru care nu îl înțeleg din soluție este cum reprezinți arborele binar în O(N*K)  memorie.
Memorat
vendetta
De-al casei
***

Karma: 72
Deconectat Deconectat

Mesaje: 122



Vezi Profilul
« Răspunde #8 : Septembrie 26, 2013, 12:32:11 »

Acel arbore binar e defapt un trie; dar avand in vedere ca sigma = 2 => o sa fie binar. Intr-un trie memoria folosita e lungTot*sigma, unde lungTot = suma lungimilor cuvintelor bagate in trie si sigma = 2(numarul caracterelor distincte folosite) => memoria folosita N * K * 2. => O(N*K) memorie. Trie-ul se contruieste similar cu cel din arhiva educationala.
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

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