infoarena

infoarena - concursuri, probleme, evaluator, articole => Arhiva de probleme => Subiect creat de: Airinei Adrian din Aprilie 26, 2007, 00:32:17



Titlul: 435 Eliminare
Scris de: Airinei Adrian din Aprilie 26, 2007, 00:32:17
Aici puteţi discuta despre problema Eliminare (http://infoarena.ro/problema/eliminare).


Titlul: Răspuns: 435 Eliminare
Scris de: Ionescu Vlad din Iulie 31, 2007, 16:10:27
Cum ar trebui sa fac query-urile in arborele de intervale astfel incat sa tin cont de elementele sterse (notate cu -1)? Mai exact, cum imi dau seama in ce interval trebuie sa fac query?

Am vazut ca solutia oficiala tot asa sterge elementele... dar codul este scris astfel incat nu se poate intelege mare lucru din el


Titlul: Răspuns: 435 Eliminare
Scris de: Airinei Adrian din Iulie 31, 2007, 16:20:16
Mai tii un arbore pentru asta, care iti va spune care este al K-lea element nescos inca.


Titlul: Răspuns: 435 Eliminare
Scris de: Ionescu Vlad din Iulie 31, 2007, 19:59:35
Si cum as putea face asta?

Eu m-am gandit sa aflu cate elemente au fost eliminate in intervalul [1, x] si [1, y] cu un arbore, si apoi query-ul pt maxim sa-l fac in intervalul [x+eliminate_in1-x, y+eliminate_in1-y]... dar asa si pe cele 2 teste care intra in timp iau WA, deci nu e bine...


Titlul: Răspuns: 435 Eliminare
Scris de: Airinei Adrian din Iulie 31, 2007, 23:28:12
Sa spunem ca ai un arbore de intervale care pentru un nod care are asociat intervalul [st,dr] stii cate pozitii valide din intervalul [st,dr] ai (pozitii cu elemente neeliminate inca). Acum daca vrei sa stii care este a K-a pozitie valida procedezi in felul urmator: te uiti prima oara la intervalele [1,N/2] si [N/2+1, N], daca in intervalul [1, N/2] ai cel putin K pozitii valide e clar ca pozitia care o cauti se afla in acest interval si este a K-a din acest interval, altfel pozitia care o cauti este a (K-x)-a pozitie din intervalul [N/2+1, N] (unde x este numar de pozitii valide din intervalul [1, N/2]). Procedezi in continuare asa pana restrangi intervalul la un singur element.


Titlul: Răspuns: 435 Eliminare
Scris de: Ionescu Vlad din August 01, 2007, 13:20:44
Ok, mersi, aproape ca mi-a iesit! :)

Am TLE pe ultimele 2 teste... si am optimizat cat am stiut. Am doua interogari pentru a afla a x-a si a y-a pozitie neeliminata, apoi una pt a afla maximul si apoi o actualizare. Ceva idei de optimizare? In afara de a parsa citirea nu prea mai stiu ce sa fac...


Titlul: Răspuns: 435 Eliminare
Scris de: Paul-Dan Baltescu din August 01, 2007, 14:45:32
Parseaza citirea. Eu asa am ajuns de la 80 la 100.


Titlul: Răspuns: 435 Eliminare
Scris de: Airinei Adrian din August 01, 2007, 18:07:36
O optimizare care m-a ajutat pe mine a fost sa pun
Cod:
struct elem { int a, b;} A[MAXN];
in loc de
Cod:
int a[MAXN], b[MAXN];
si sa modific simultan arborii, adica fac ceva de genul
Cod:
A[nod].a += valoare1, A[nod].b += valoare2
in functia de update. Banuiesc ca motivul pentru care merge asa mai repede e ca acceseaza mai rapid memoria.


Titlul: Răspuns: 435 Eliminare
Scris de: Ionescu Vlad din August 01, 2007, 18:30:34
 :shock: Nu-mi vine sa cred... a intrat in 5.5 sec pe ultimul test  :o

Puteam sa jur ca folosind structuri va fi cu mult mai incet...

Mersi mult pentru ajutor :)


Titlul: Răspuns: 435 Eliminare
Scris de: Bogdan-Alexandru Stoica din Septembrie 21, 2007, 14:53:06
am aceeasi problema ca la elimin (de la preONI). iau SIGSECV si sigur nu este de la memorie. acasa imi merge pe teste mari (10000 de teste random si n-a crapat). ce poate sa fie ?  ](*,)

http://infoarena.ro/job_detail/85398


Titlul: Răspuns: 435 Eliminare
Scris de: Airinei Adrian din Septembrie 21, 2007, 15:13:25
Ai rulat acasa sub linux sursa?


Titlul: Răspuns: 435 Eliminare
Scris de: Bogdan-Alexandru Stoica din Septembrie 21, 2007, 22:28:23
n-am linux acasa :-' tre sa vina un hard nou mai incapator si apoi o sa bag linux  :oops:


Titlul: Răspuns: 435 Eliminare
Scris de: Mari n din Octombrie 14, 2008, 12:04:26
Tinand cont ca elementele sunt cate unu si doua pe linie, cum parsez citirea (ce functie folosesc)?


Titlul: Răspuns: 435 Eliminare
Scris de: Flaviu Pepelea din Octombrie 14, 2008, 12:21:57
faci o parsare normala :D daca ai 2 numere, atunci parcurgi sirul si tot ce e inainte de spatiu pui in a, iar restul in b


Titlul: Răspuns: 435 Eliminare
Scris de: Mari n din Octombrie 14, 2008, 12:29:14
Eu inteleg asa:
O sa reduc numarul de accesari la disk cu m/2, unde m este numarul de linii cu cate doua elemente (o sa fac atatea accesari ale diskului cate linii am).
Eu ma intrabam daca pot citi intr-un buffer o data mai multe numere, chiar de pe linii diferite


Titlul: Răspuns: 435 Eliminare
Scris de: Flaviu Pepelea din Octombrie 14, 2008, 12:57:40
nu merge....numa sa citesti mai multe numere aflate pe aceasi linie :)


Titlul: Răspuns: 435 Eliminare
Scris de: Macarescu Sebastian din Noiembrie 14, 2010, 13:30:58
100 de puncte fara parsare  :yahoo: http://infoarena.ro/job_detail/501116 (http://infoarena.ro/job_detail/501116)


Titlul: Răspuns: 435 Eliminare
Scris de: Pripoae Teodor Anton din Noiembrie 14, 2010, 23:51:12
http://infoarena.ro/job_detail/275314

Tot fara.


Titlul: Răspuns: 435 Eliminare
Scris de: Salajan Razvan din Octombrie 04, 2011, 16:54:26
i`au decat 70 de pct (cu 3 teste tle ) cu o sursa cu care luam inainte 100 de pct


Titlul: Răspuns: 435 Eliminare
Scris de: Mihai Calancea din Octombrie 04, 2011, 19:34:23
i`au decat 70 de pct (cu 3 teste tle ) cu o sursa cu care luam inainte 100 de pct

Iei fara apostrof sau orice alt separator si iei numai, nu decat. 'Decat' folosesti doar daca verbul are negatie  :). Gen 'Nu am decat 50 de sticle de sampanie'.


Titlul: Răspuns: 435 Eliminare
Scris de: stardust din Iulie 22, 2012, 17:59:52
Si eu iau tot 70 cu tle pe ultimele 3. Am vazut ca a fost reportata problema pentru limita de timp si e marcata ca rezolvata. Totusi mi se pare destul de stransa. Am vazut ca si tu Razvan folosesti cam tot 28 de mega pe testele alea. Retii si tu 3 informatii pt fiecare nod din arbore ? Ca sa pot sa elimin elementele am nevoie sa tin un arbore care sa imi zica pe ce pozitie in ordinea initiala se afla maximul de pe un interval. Se poate sa scap de arborele asta ?