Afişează mesaje
|
Pagini: 1 [2] 3
|
31
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 1438 Autobuze
|
: Noiembrie 17, 2013, 23:11:02
|
Cum se rezolva de 100? Eu fac asa pentru 80 de puncte: sortez vectorul a si iau valoarea maxima (fie ea MaxVal). Apoi, pentru fiecare valoare a[j], iau toti multiplii sai <= MaxVal si ii caut binar in vectorul a. Daca am gasit vreun multiplu al lui a[j] la pozitia m, inseamna ca am muchie intre j si m in graful pe care il construiesc. Raspunsul este egal cu numarul de componente conexe din graf, lucru pe care il rezolv cu BFS. Vreo idee pentru 100? Se face altfel sau trebuie un pic optimizata ideea mea?
|
|
|
34
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 357 Editor
|
: Noiembrie 09, 2013, 02:39:27
|
Foloseste o stiva in varful careia sa tii tipul ultimei paranteze deschise, iar cand intalnesti o paranteza inchisa verifici daca este de acelasi tip ca cea din varful stivei si o elmini. In cazul in care paranteza din varful stivei nu coincide cu paranteza intalnita, sirul este gresit parantezat. La sfarsit mai ai de verificat daca stiva este goala.
|
|
|
41
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 290 Gandaci Java
|
: August 24, 2013, 23:24:55
|
De ce dintre urmatoarele 2 functii de cuplare inline bool pair_up(int x) { if(used[x]) return 0; used[x] = 1; for(size_t i = 0; i < v[x].size(); ++i) { int y = v[x][i]; if(!R[y]) { L[x] = y; R[y] = x; return 1; } } for(size_t i = 0; i < v[x].size(); ++i) { int y = v[x][i]; if(pair_up(R[y])) { L[x] = y; R[y] = x; return 1; } } return 0; } si inline bool pair_up(int x) { if(used[x]) return 0; used[x] = 1; for(size_t i = 0; i < v[x].size(); ++i) { int y = v[x][i]; if(!R[y] || pair_up(R[y])) { L[x] = y; R[y] = x; return 1; } } return 0; }
prima este mai rapida? Cu alte cuvinte, de ce este mai rapid ca intai sa cuplez nodul x cu un nod catre care am muchie si nu este cuplat, iar abia apoi sa incerc sa-l cuplez cu un nod catre care am muchie si pe care-l decuplez de nodul cu care acesta era cuplat?
|
|
|
43
|
infoarena - concursuri, probleme, evaluator, articole / Concurs Mihai Patrascu 2013 / Răspuns: Album
|
: August 17, 2013, 16:17:47
|
Vreau si eu o parere despre solutia mea: M-am gandit sa aplic o strategie greedy; la fiecare pas (adica la fiecare poza facuta), incerc sa fac in asa fel incat sa se vada cat mai multe clase (care n-au aparut si in alte poze), in felul urmator: la inceput sortez elevii din fiecare clasa dupa inaltimea lor si apoi incerc sa sortez clasele in asa fel incat daca clasa i poate fi asezata inaintea clasei j la poza astfel incat sa se vada toti elevii din ambele clase, clasa i va fi pe o pozitie inaintea clasei j in sirul sortat al claselor. Acum incerc sa iau un numar maxim de clase astfel incat sa fie vizibile toate la poza; pentru asta voi face un subsir crescator maximal in K dimensiuni. Dupa ce am gasit valoarea Max = lungimea maxima a unui subsir crescator, marchez toate clasele care au format acest subsir ca si folosite: used[clasa] = true si apoi trec la pasul urmator (urmatoarea poza), unde voi forma din nou un subsir maximal crescator, avand grija sa nu folosesc decat clasele unde used[clasa] = false. Algoritmul se repeta pana cand used[j] = true, pentu orice 1 <= j <= N. Complexitatea totala e Nr_pasi*N*logN = N^2*logN. Eu am gresit implenetarea in timpul concursului, dar nu gasesc niciun contraexemplu.
|
|
|
45
|
infoarena - concursuri, probleme, evaluator, articole / Concurs Mihai Patrascu 2013 / Răspuns: Rectangles
|
: August 17, 2013, 11:17:53
|
Pentru: 1 0 2 1 0 1 1 2 1 2 2 3 2 1 3 2 raspunsul e 4 sau 5?
Pe acest test nu exista 7 patrate? Eu gasesc (0,0; 1,1) (1,1; 2,2) (0,1; 1,2) (1,1; 2,2) (2,1; 3,2) (1,2; 2,3) si (0,0; 2,2)
|
|
|
|