Afişează mesaje
|
|
Pagini: [1]
|
|
3
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva educationala / Răspuns: 016 Range minimum query
|
: Martie 07, 2011, 23:06:16
|
|
care este complexitatea lui min(a[ h ][ x ],a[ h ][ x+sh ])? este O(1)?
dar complexitatea lui a[ y-x ][ x ]? este tot O(1)?
nu ia mai mult timp prima varianta pt. ca se compara doua valori, pe cand in a doua doar se returneaza o valoare?
Daca e asa, atunci pt. un milion de interogari sa zicem, nu e metoda mea mai eficienta, desi ocupa mai multa memorie si timp la crearea matricei?
|
|
|
|
|
5
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva educationala / Răspuns: 016 Range minimum query
|
: Martie 06, 2011, 21:58:51
|
|
eu am inteles rmq-ul asta dar am o intrebare:
de ce folosim puteri ale lui 2 si nu ceva mult mai simplu precum o progresie aritmetica? in felul asta matricea ar fi mai mare ce-i drept insa query-ul ar fi mai rapid pentru ca nu ar mai fi nevoie sa calculam minimul dintre doua valori (deoarece nu vom mai folosi log)
cum m-am gandit eu:
a[ i ][ j ]=min(a[i-1][j],a[i-1][j+i-1]); a[ i ][ j ]=min(a[0][j],...,a[0][j+i]); deci a[ i ][ j ] este minimul pe sirul care incepe la j si are lungimea de i+1
prin urmare minimul din intervalul [x,y] ar fi pur si simplu a[ y-x ][ x ] (fara sa trebuiasca sa mai folosim vreo functie de minim)
deci, eu zic ca metoda asta a mea e mai eficienta fata de cea de pe site, atunci cand se folosesc foarte multe interogari.
Gresesc undeva?
|
|
|
|
|
8
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva educationala / Răspuns: 016 Range minimum query
|
: Februarie 24, 2011, 22:01:16
|
care este relatia de recurenta pe linii? cumva asta: rmq[i][j]=min(rmq[0][j],...,rmq[0][j+pow(2,i)-1]) ? daca asa e, atunci de ce mie imi da rmq[3][j]=min(rmq[0][j],...mrmq[0][j+6]); si nu j+7 la sfarsit ?
|
|
|
|
|
13
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva educationala / Răspuns: 024 Deque
|
: Februarie 06, 2011, 16:27:23
|
|
Eu nu pot sa inteleg de ce solutia cu deque are complexitate O(N). Eu m-am gandit la ce complexitate are algoritmul postat aici cu deque si imi iese o complexitate mai mare decat N, insa in nici un caz N. Pentru ca se parcurge vectorul A o data cu for si apoi se mai parcurge partial si Deque cu un while in la fiecare iteratie in for. Deci eu zic ca complexitatea trebuie sa fie mai mare decat N.
|
|
|
|
|
17
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva educationala / Răspuns: 020 Cuplaj maxim in graf bipartit
|
: Februarie 02, 2011, 21:50:55
|
|
Merci! Eu m-am gandit la un algoritm propriu inspirat de chestia asta cu vectorii L si R. Incerc sa cuplez un nod din stanga cu unul din dreapta. Daca nodul din dreapta nu e cuplat atunci fac cuplajul. Altfel caut un alt nod din dreapta cu care nodul din stanga se poate cupla. Daca toate nodurile din dreapta nodului din stanga sunt cuplate atunci decuplez un nod din dreapta, il cuplez cu nodul din stanga, iar nodul din stanga care a fost decuplat de nodul din dreapta caut sa-l cuplez cu un altul din dreapta necuplat.
Faza e ca algoritmul la care m-am gandit eu merge foarte bine pe foaie, intru-cat l-am testat multe grafuri bipartite? Cumva algoritmul tau face acelasi lucru?
Apropo: algoritmul lui Stroe nu merge pentru un graf anume. E gresit.
|
|
|
|
|
20
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva educationala / Răspuns: 027 Componente tare conexe
|
: Decembrie 13, 2010, 20:44:46
|
|
Am trimis si eu un program spre evaluare (algoritmul lui Gabow) si am erorile astea pe care nu le-am avut pe pc-ul meu:
Eroare de compilare: user.cpp:160:2: warning: no newline at end of file user.cpp:30: error: '>>' should be '> >' within a nested template argument list user.cpp:31: error: '>>' should be '> >' within a nested template argument list user.cpp:71: error: '>>' should be '> >' within a nested template argument list
Care-i faza?
|
|
|
|
|
21
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva educationala / Răspuns: 034 Ciclu Eulerian
|
: Decembrie 06, 2010, 20:26:47
|
"Pentru determinarea lantului, vom adaugata fictiv o muchie intre aceste doua noduri, dupa care vom aplica algoritmul de determinare a unui ciclu Eulerian. Eventual, acest ciclu determinat va fi 'rupt' in locul in care apare muchia adaugata si tiparit in ordinea corecta." Eu am implementat algoritmul recursiv si totul merge perfect. Nu mai trebuie sa adaugi nicio muchie fictiva. Trebuie doar sa apelezi euler(nod de grad impar). Si merge. NU inteleg de ce ati scris chestia asta cu muchia. Va rog raspundeti-mi ca sa nu mor prost. [email protected]
|
|
|
|
|