Afişează mesaje
Pagini: [1]
1  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 981 Immortal : Martie 08, 2010, 17:45:23
In timp constant, sa zic ca v[ i ] este nemuritorul care sare. Daca se poate sari v[ i ] va  contine noua pozitie, desigur cu update-urile necesare si in matrice...
LE: parserz si citirea, si afisarea. Oricum eu mai am o intrebare, de ce pe .campion merge sub 0.2 si pe infoarena merge peste  Eh?

Sa zicem ca nemuritorul i este pe lina x si coloana y si gaseste un nemuritor peste care vrea sa sara cu indicele i+5 care se afla pe linia x+1 si coloana y. Pe i+5 il updatezi tot in timp constant in vector ca dispare?

Practic eu am facut la fel ca tine doar ca in matrice in loc de:
"daca mat(i)(j)=1 exista nemuritor pe pozitia respectiva",
folosesc:
"daca mat(i)(j)!=0 rezulta ca pe pozitia i si j se afla nemuritorul cu indicele mat(i)(j)"

Si treaba asta ma ajuta sa fac toate update-urile in timp constant.
2  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 981 Immortal : Martie 08, 2010, 17:28:35
Nu parcurg nici o matrice, am un vector v in care retin toti nemuritorii si o matrice G in care retin 1 daca nemuritorul este in casuta respectiva sau 0 altfel. Si acum in back, fac un for de la 1->numarul de numritori, iar pentru fiecare nemuritor vad cei 4 vecini ai sai, vad daca poate sari peste unul si daca are peste cine sa sara, daca sunt indeplinite ambele atunci apelez back...
ps: M-am uitat peste solutia oficiala... ideea e la fel ca cea de 100pct Smile
LE: am trimiso si pe .campion si pe testul pe care depasesc il trec cu 0.17  Eh?

Pe aceeasi idee am luat si eu 100 de puncte chiar pe infoarena. Dupa ce vezi ca un nemuritor are vecin peste care poate sari si initiezi avansarea in backtracking, cum updatezi in vectorul cu nemuritori ca cel peste care s-a sarit e mort? Daca o sa zici ca nu e aici problema, nu prea am cum sa te ajut fara sa vad sursa, deci va trebui sa te mai zbati. Tongue
3  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 981 Immortal : Martie 08, 2010, 16:46:48
Ce optimizari pot sa fac la back ? pentru fiecare nemuritor, care nu este mort,  vad daca are vecini si daca poate sari peste ei, daca  apelez recursiv back. Cand a gasit o solutie folosesc exit ca ies de tot din program...
Obtin 90pct , TLE pe al 2 test

Banuiesc ca la fiecare pas din backtracking tu ai 2 for-uri cu care se parcurge o matrice care indica daca in pozitia respectiva se afla un nemuritor sau nu. Incearca sa ajungi la O(numar_nemuritori) in loc de O(n*m) si o sa iei 100 de puncte.
4  Comunitate - feedback, proiecte si distractie / Off topic / Răspuns: Porbleme OLI Bucuresti 2008 : Februarie 25, 2008, 18:56:55
Pentru cine vrea prima cerinta de la OLI 2008 Bucuresti (11-12):

http://www.filebox.ro/download.php?key=f5e1213219e42992333e4f6bd1171233
5  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 483 Maxd : Ianuarie 13, 2008, 15:13:57
Pf....nu am inteles cum se face din e ziceti voi acolo...eu sunt clasa a 9a asa ca nu inteleg ce e O(log(...)) .. eu am pus intr-un vector toate numerele prime mai mici ca 2 milioane....si apoi am luat fiecare numar din intervalul [a,b] si l-am descompus in factori primi, am retinut puterile si am aplicat nrdiv=(1+p1)(1+p2)...(1+pr) unde p1..pr sunt puterile factorilor primi......si de aici ati inteles......dar iau KBS 11........care e varianta optima de rezolvare?

Declarand un vector atat de mare, tu depasesti cu mult memoria alocata acestei probleme.

Pentru a genera solutia este nevoie doar de valorile dintr-un anumit interval. Incearca sa tii cont de chestia asta in rezolvare.

Bafta!
6  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 605 Economie : Ianuarie 09, 2008, 02:32:05
fratilor am nevoie de ajutorul vostru. trimit solutia problemei si imi apare punctajul este 0 cu mesajul Non-zero exit status. ce vrea sa spuna mesajul asta. PS: sursa e facuta in pascal  Brick wall

Mesajul iti arata ca programul tau nu a fost rulat pana la final, iar astfel nu a returnat valoarea 0.
Motivul este ca s-a incercat o accesare dupa limita vectorului declarat. 

In alte probleme iti poate aparea acelasi mesaj si din alte cauze, documenteaza-te! 
http://infoarena.ro/documentatie/evaluator





7  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 515 Impartire : Ianuarie 09, 2008, 02:03:32
12 34  --> 0.(3529411764705882)
16 29  --> 0.(5517241379310344827586206896)
7 575  --> 0.01(2173913043478260869565)
11 232 --> 0.047(4137931034482758620689655172)
29 768 --> 0.03776041(6)

Bafta!
Pagini: [1]
Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines