Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: 030 Hashuri  (Citit de 17647 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
pauldb
Nu mai tace
*****

Karma: 821
Deconectat Deconectat

Mesaje: 1.901



Vezi Profilul
« : Ianuarie 02, 2009, 15:39:49 »

Aici puteti discuta despre problema Hashuri din Arhiva educationala.
Memorat

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

Karma: 169
Deconectat Deconectat

Mesaje: 751



Vezi Profilul
« Răspunde #1 : Ianuarie 03, 2009, 11:27:15 »

As avea doua intrebari in legatura cu containerul 'Map' din STL.
1) Ce reprezinta cei doi parametri de la declarare ( adica de ce este declarat <int, int>)?
2) Este eficient pentru hashuri?

Multzam anticipat Very Happy
Memorat
pauldb
Nu mai tace
*****

Karma: 821
Deconectat Deconectat

Mesaje: 1.901



Vezi Profilul
« Răspunde #2 : Ianuarie 03, 2009, 15:12:45 »

1. Aici folosesti map <int, int> pentru ca vrei sa creezi ascoieri intre doua elemente de tip int (elementul din multime si indicele de ordine). Avantajul principal este ca poti face si map-uri mai complicate folosind stringuri, vectori din STL sau altele (pentru care sa construiesti o functie hash este mai incomod).

2. Nu este destul de eficient pentru a obtine 100 de puncte la aceasta problema, dar de multe ori e de ajuns.
Memorat

Am zis Mr. Green
gh09
Strain
*

Karma: -2
Deconectat Deconectat

Mesaje: 38



Vezi Profilul
« Răspunde #3 : Ianuarie 04, 2009, 21:19:33 »

am o nelamurire...in functia erase am chestia asta:
Citat
w = q;
         q = q -> next;
         delete w;
daca trimit sursa cu ea imi ia TLE pe un test (nu inteleg dc ca doar e O(1)), daca trimit fara (ceea ce nu este corect intra foarte bine in timp pe testul acela). ma poate ajuta cineva? Winner 1st place

inainte aveam chestia asta:
Citat
# if (q == p) 
#             { 
#                w = p; 
#                p = p -> next; 
#                delete w; 
#             } 
#          else 
#             { 
#                w = q; 
#                q = w -> next; 
#                delete w; 
#             } 
mi-am dat seama ca e acelasi lucru in if si else si am pus numa ce e mai sus. inainte intra foarte bine in timp....
Memorat
mika17
Strain
*

Karma: 8
Deconectat Deconectat

Mesaje: 33



Vezi Profilul
« Răspunde #4 : Ianuarie 04, 2009, 22:18:53 »

Aici la hashuri mai intra super frumos si rapid in timp si problema banana http://infoarena.ro/problema/banana
Memorat
crawler
Vorbaret
****

Karma: 105
Deconectat Deconectat

Mesaje: 161



Vezi Profilul
« Răspunde #5 : Ianuarie 05, 2009, 19:26:35 »

de pe infoarena eqs,oite si take5
si de pe sgu http://acm.sgu.ru/problem.php?contest=0&problem=174
Memorat
devilkind
Echipa infoarena
Nu mai tace
*****

Karma: 284
Deconectat Deconectat

Mesaje: 1.240



Vezi Profilul
« Răspunde #6 : Ianuarie 05, 2009, 21:21:42 »

aia de pe sgu a fost bagata la disjoint data set.
Memorat
otilia_s
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 12



Vezi Profilul
« Răspunde #7 : Aprilie 01, 2009, 20:50:42 »

As avea si eu o intrebare in legatura cu memoria heap. Stiu ca pe Windows se puteau aloca maxim 64 Kb. Dar cat este maximul in Linux?
Problema mea dadea Killed by signal 11(SIGSEGV) in functie de dimensiunea pe care o alegeam pentru vectorul alocat dinamic (acel modul pentru care calculam n%modul). Cand am dat un numar prim de valoare mai mica problema a luat 100p, desi din cate stiu eu alocam acelasi numar de valori(pt fiecare din valorile inserate alocam spatiu in memorie, indiferent in care lista simplu inlantuita era repartizata).
Puteti sa imi explicati si mie, va rog?  Very Happy
Memorat
alexandru92
Nu mai tace
*****

Karma: -191
Deconectat Deconectat

Mesaje: 496



Vezi Profilul
« Răspunde #8 : Februarie 03, 2010, 15:24:29 »

Citat
Programatorii C++ mai au la indemana in STL container-ul map...
Nu mi se pare ok sa folosesti map pentru hashing. Mai rapid si eficient este hash_set( hash_multiset ), respectiv hash_map ( hash_multimap ). Ambele obtinand 100pct.
http://infoarena.ro/job_detail/390327?action=view-source (hash_set)
http://infoarena.ro/job_detail/390331?action=view-source (hash_map)
« Ultima modificare: Februarie 03, 2010, 19:30:29 de către alexandru » Memorat
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #9 : Februarie 03, 2010, 16:22:08 »

Pe gcc 4.3 nu compileaza daca incluzi <hash_set.h>, trebuie inclus <hash_set>.

@echipa-infoarena: Ce ar fi daca am schimba comanda de compilare astfel incat sa includa  -std=gnu++0x? Astfel ar putea fi folosite chestii din noul standard, cum ar fi <unordered_set>.
Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
popoiu.george
Vorbaret
****

Karma: 19
Deconectat Deconectat

Mesaje: 162



Vezi Profilul
« Răspunde #10 : Februarie 03, 2011, 22:43:01 »

Care functie de hash e cea mai buna pentru key numere reale ?

Eu folosesc h(x) = [ m * {y*x} ], unde 0<y<1, si m un numar natural. Eu iau m=666013 si y=0.5.
[a] - partea intreaga
{a} - partea fractionara

PS : hash_map si hash_set nu merg cu key double sau float.  sad
« Ultima modificare: Februarie 03, 2011, 22:48:30 de către George Popoiu » Memorat
Prostu
Nu mai tace
*****

Karma: 134
Deconectat Deconectat

Mesaje: 323



Vezi Profilul
« Răspunde #11 : Februarie 04, 2011, 00:24:48 »

Care functie de hash e cea mai buna pentru key numere reale ?

Eu folosesc h(x) = [ m * {y*x} ], unde 0<y<1, si m un numar natural. Eu iau m=666013 si y=0.5.
[a] - partea intreaga
{a} - partea fractionara

PS : hash_map si hash_set nu merg cu key double sau float.  sad

Acest articol recomanda sa folosesti y = 0.6180339887.
In ce sens nu merge sa folosesti hash_map si hash_set cu chei reale? Singura problema ar fi ca nu au o functie de hash definita pentru numere reale, dar o data ce le dai functia pe care ai scris-o, ar trebui sa mearga.
Memorat
https
Strain
*

Karma: 0
Deconectat Deconectat

Mesaje: 30



Vezi Profilul
« Răspunde #12 : Februarie 18, 2014, 19:11:23 »

De ce in solutia oficiala pentru numarul mod se foloseste  666013 si nu un numar mai mare? Si cum e mai eficient? Sa implementez hashuri cu <list> sau cu <vector>? Multumesc
Memorat
rares96cheseli
Client obisnuit
**

Karma: 45
Deconectat Deconectat

Mesaje: 60



Vezi Profilul
« Răspunde #13 : Februarie 18, 2014, 20:15:10 »

De ce in solutia oficiala pentru numarul mod se foloseste  666013 si nu un numar mai mare? Si cum e mai eficient? Sa implementez hashuri cu <list> sau cu <vector>? Multumesc

Cu vector. Cu list e si mai incep si consuma si mult mai multa memorie
Memorat
k_ounu_eddy
Vorbaret
****

Karma: -104
Deconectat Deconectat

Mesaje: 161



Vezi Profilul
« Răspunde #14 : Mai 10, 2015, 10:06:19 »

Poate cineva sa-mi spuna de ce nu iau nici un punct pe sursa mea?
Va multumesc
Memorat
klamathix
Echipa infoarena
Nu mai tace
*****

Karma: 733
Deconectat Deconectat

Mesaje: 1.216



Vezi Profilul
« Răspunde #15 : Mai 10, 2015, 11:51:04 »

Ai șanse mici să urmărească cineva sursa, e prea lungă. Mai bine descarcă-ți testele și vezi unde crapă. Dacă nu sunt suficient de mici, generează-ți tu câteva, sigur găsești repede unul.
Memorat
k_ounu_eddy
Vorbaret
****

Karma: -104
Deconectat Deconectat

Mesaje: 161



Vezi Profilul
« Răspunde #16 : Mai 11, 2015, 18:55:59 »

Nu credeam ca se pot descarca testele.
O sa ma uit mai atent, multumesc.
Memorat
k_ounu_eddy
Vorbaret
****

Karma: -104
Deconectat Deconectat

Mesaje: 161



Vezi Profilul
« Răspunde #17 : Iulie 27, 2015, 18:57:53 »

Eu nu primesc nici un punct...
Am descarcat mai toate testele, si am vazut ca obtin raspunsuri corecte.
Cel putin la primele trei teste(celelalte sunt huge, pentru a putea fi verificate manual), am obtinut raspuns corect,
iar evaluatorul imi da 0...
Memorat
klamathix
Echipa infoarena
Nu mai tace
*****

Karma: 733
Deconectat Deconectat

Mesaje: 1.216



Vezi Profilul
« Răspunde #18 : Iulie 27, 2015, 22:22:12 »

Atunci când îți merge local dar iei 0 pe infoarena în 90% din cazuri chiar faci ceva greșit, dar probabil comportamentul e nedefinit. Uită-te după out-of-bound access și alte chestii de genul ăsta. Ai și un warning destul de urât.
Memorat
k_ounu_eddy
Vorbaret
****

Karma: -104
Deconectat Deconectat

Mesaje: 161



Vezi Profilul
« Răspunde #19 : Iulie 27, 2015, 23:34:57 »

Multumesc pentru raspuns
Sa vedem ce rezolv...
Memorat
k_ounu_eddy
Vorbaret
****

Karma: -104
Deconectat Deconectat

Mesaje: 161



Vezi Profilul
« Răspunde #20 : Iulie 28, 2015, 11:07:45 »

Multumesc pentru raspuns
Sa vedem ce rezolv...
[EDIT]: Chiar nu inteleg ce gresesc. Am verificat pentru out-of-bonds access, si nu pare sa am.
Folosesc aceleasi "setari" la compilarea sursei, ca si evaluatorul infoarena.
Memorat
SebiSebi
Nu mai tace
*****

Karma: 76
Deconectat Deconectat

Mesaje: 306



Vezi Profilul
« Răspunde #21 : Iulie 28, 2015, 13:12:03 »

Fii atent la cum faci citirea. Trebuie sa specifici un mod atunci când folosești fstream.open(). Tie nu iti citește nimic și de asta iei incorect. Uita-te și pe timpii foarte mici (4 ms)  Smile. Am luat 100 cu sursa ta modificând deschiderea fișierului în ifstream fin("hashuri.in").
Memorat
whoiscris
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 3



Vezi Profilul
« Răspunde #22 : Octombrie 23, 2016, 01:49:06 »

solutie in C++ cu map si P containere set. Smooth! Ok
Memorat
mihai.alpha
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 16



Vezi Profilul
« Răspunde #23 : Ianuarie 30, 2017, 10:00:38 »

Cea mai usoara solutie fara map si set: solutie cu std::vector. Am scos cu tot cu parsare 300ms pe cel mai rau test Smile
Memorat
Steff94
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 2



Vezi Profilul
« Răspunde #24 : Mai 13, 2018, 20:54:34 »

https://infoarena.ro/job_detail/2203975

Testele descarcate functioneaza in Visual Studio cu outputul corect. Compilatorul de pe infoarena da incorect la toate testele.
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

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