Afişează mesaje
|
Pagini: [1]
|
9
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 019 Pavare
|
: Ianuarie 04, 2015, 18:10:44
|
Ar trebuie o solutie in O(4^M*N) sa mearga? Eu am facut o dinamica cu back pe fiecare linie, si tineam starea liniei anterioare. Ce-i drept, am facut-o intr-un mod mai "destept", facand dinamica "inainte", un fel de parcurgere BFS. A trecut cu 24 de ms pe ultimul test, cu mult mai repede decat solutiile in O(2^N*N*M). Totusi ma intreb care e logica solutiei oficiale optime?
Edit: Dupa o analiza mai atenta, am observat ca complexitatea algoritmului e mai apropiata de O(2^M*fib(M)*N).
|
|
|
16
|
infoarena - concursuri, probleme, evaluator, articole / Infoarena Monthly 2014 / Răspuns: Infoarena Monthly 2014, Runda 8
|
: Septembrie 01, 2014, 12:05:49
|
O runda cu probleme super frumoase ! Big up comisiei !  Apropo,imi poate da si mie cineva o indicatie la problema Super Mario ? M am chinuit o ora din concurs sa o dovedesc,dar nu prea a fost cu succes  Sunt doua solutii oficiale. In continuare voi prezenta una dintre acestea. Vom defini o functie recursiva, Solve(left, right), care returneaza numarul minim de mutari necesare pentru a distruge toate testoasele din intervalul [left, right], folosind numai testoase din acest interval. Raspunsul va fi dat de Solve(1, N), iar cazurile de baza Solve(i, i) sunt triviale (raspunsul e mereu 1). Intr-o solutie optima, testoasele vor fi distruse in ordine descrescatoare dupa valori. Astfel, vom incerca sa facem prima mutare in Solve(left, right). Fie pos pozitia pe care se afla testoasa de valoare maxima din intervalul [left, right]. Putem sa o lovim spre stanga sau spre dreapta, iar noi vom alege varianta optima. Astfel, Solve(left, right) va returna min(Solve(left, pos - 1), Solve(pos + 1, right)) + 1. Pentru a determina eficient pos, putem folosi o structura de date precum arborii de intervale. Complexitatea este O(N * logN). Cealalta solutie oficiala se bazeaza pe programare dinamica si are complexitate liniara. Mi-a venit si mie fix aceeasi idee cu Divide et Impera, dar cum pot sa demonstrez corectitudinea algoritmului? In special afirmatia ca cel mai optim mod este sa distrugem testoasele in ordine descrescatoare dupa P[ i ]. Intuitiv inteleg de ce e asa, dar cum as proceda daca as vrea sa fac o demonstratie matematica consistenta? Presupun ca aici trebuie folosita reducerea la absurd dar nu imi vine in cap cum sa construiesc argumentul.
|
|
|
17
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva educationala / Răspuns: 054 Problema Damelor
|
: August 31, 2014, 11:41:45
|
Aproape intotdeauna cand tie iti da bine local si evaluatorului ii da prost e din cauza faptului ca accesezi memorie aiurea. Calculatorul tau te iarta, din diverse motive, dar evalul nu  . Dupa o privire fugitiva, probabil la tine e vorba de vectorul sol. Oh, am si uitat ca daca declari un vector se aloca intervalul [0,N-1]  Mersi pentru ajutor.
|
|
|
19
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva educationala / Răspuns: 015 Arbori indexati binar
|
: August 07, 2014, 19:07:27
|
În principiu simulezi căutarea binară pe arbore. Dacă tu vrei să obții suma A, iar fiul stâng al rădăcinii are suma B >= A te duci în fiul stâng și continui căutarea, altfel o continui în fiul din dreapta pentru valoarea A - B.
Înțeleg că răspunsul pe care l-ai primit anterior nu te-a ajutat (deși tehnic ți s-a răspuns la întrebare), dar încearcă să fii mai politicos. Nu are niciun sens să fii sarcastic când ceri ajutor.
Thanks. Cam problematica aceasta operatie.
|
|
|
|