Titlul: 030 Hashuri Scris de: Paul-Dan Baltescu din Ianuarie 02, 2009, 15:39:49 Aici puteti discuta despre problema Hashuri (http://infoarena.ro/problema/hashuri) din Arhiva educationala (http://infoarena.ro/arhiva-educationala).
Titlul: Răspuns: 030 Hashuri Scris de: Andrei Misarca din 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 :D Titlul: Răspuns: 030 Hashuri Scris de: Paul-Dan Baltescu din 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. Titlul: Răspuns: 030 Hashuri Scris de: chisinau gheorghita din Ianuarie 04, 2009, 21:19:33 am o nelamurire...in functia erase am chestia asta:
Citat w = q; 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? :winner1:q = q -> next; delete w; inainte aveam chestia asta: Citat # if (q == p) 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....# { # w = p; # p = p -> next; # delete w; # } # else # { # w = q; # q = w -> next; # delete w; # } Titlul: Răspuns: 030 Hashuri Scris de: Mihai Alex Ionescu din 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
Titlul: Răspuns: 030 Hashuri Scris de: Puni Andrei Paul din 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 Titlul: Răspuns: 030 Hashuri Scris de: Savin Tiberiu din Ianuarie 05, 2009, 21:21:42 aia de pe sgu a fost bagata la disjoint data set.
Titlul: Răspuns: 030 Hashuri Scris de: Otilia Stretcu din 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? :D Titlul: Răspuns: 030 Hashuri Scris de: alexandru din 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) Titlul: Răspuns: 030 Hashuri Scris de: Andrei Grigorean din 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>. Titlul: Răspuns: 030 Hashuri Scris de: George Popoiu din 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: Titlul: Răspuns: 030 Hashuri Scris de: Stefan-Alexandru Filip din 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 (http://infoarena.ro/tabele-hash-scurta-prezentare) 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. Titlul: Răspuns: 030 Hashuri Scris de: Lup Vasile din 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
Titlul: Răspuns: 030 Hashuri Scris de: Rares Cheseli din 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 Titlul: Răspuns: 030 Hashuri Scris de: Iacob Eduard din Mai 10, 2015, 10:06:19 Poate cineva sa-mi spuna de ce nu iau nici un punct pe sursa mea?
Va multumesc Titlul: Răspuns: 030 Hashuri Scris de: Mihai Calancea din 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.
Titlul: Răspuns: 030 Hashuri Scris de: Iacob Eduard din Mai 11, 2015, 18:55:59 Nu credeam ca se pot descarca testele.
O sa ma uit mai atent, multumesc. Titlul: Răspuns: 030 Hashuri Scris de: Iacob Eduard din 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... Titlul: Răspuns: 030 Hashuri Scris de: Mihai Calancea din 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.
Titlul: Răspuns: 030 Hashuri Scris de: Iacob Eduard din Iulie 27, 2015, 23:34:57 Multumesc pentru raspuns
Sa vedem ce rezolv... Titlul: Răspuns: 030 Hashuri Scris de: Iacob Eduard din 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. Titlul: Răspuns: 030 Hashuri Scris de: Pirtoaca George Sebastian din 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) :). Am luat 100 cu sursa ta modificând deschiderea fișierului în ifstream fin("hashuri.in").
Titlul: Răspuns: 030 Hashuri Scris de: Cristian Plop din Octombrie 23, 2016, 01:49:06 solutie in C++ cu map si P containere set. Smooth! :ok:
Titlul: Răspuns: 030 Hashuri Scris de: mihai craciun din 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 :)
Titlul: Răspuns: 030 Hashuri Scris de: Stefan din 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. |