infoarena

infoarena - concursuri, probleme, evaluator, articole => Articole => Subiect creat de: Voicu Octavian din Martie 04, 2005, 00:47:08



Titlul: preONI 2005 runda #2
Scris de: Voicu Octavian din Martie 04, 2005, 00:47:08
In articol, la problema car:

Cod:
x = (i << 9) + j + (dir << 18);
dir = x >> 18;  
j = (x & 511);
i = (x >> 9) & 512;


Eu cred ca e gresit in articol... acolo trebuie sa fie tot 511 sau 0x1ff nu 512.


Titlul: preONI 2005 runda #2
Scris de: Cosmin Negruseri din Martie 04, 2005, 08:21:34
Da intr-adevar am facut o greseala de tastare nu de logica :), si articolul in general e bun :), imi pare bine ca se uita lumea in detaliu la problema mea.


Titlul: preONI 2005 runda #2
Scris de: Voicu Octavian din Martie 04, 2005, 18:21:29
Keep up the good work :)

Am reusit sa implementez car si sa iau 100... dar a trebuit sa fac multe optimizari ca sa mearga. In final, solutia era mult mai mica decat aia initiala totusi :)) Si am implementat coada fara pointeri (un vector mare alocat la inceput sau declarat static, global)... altfel nu intra in timp pe ultimele cazuri.


Titlul: preONI 2005 runda #2
Scris de: Cosmin Negruseri din Martie 04, 2005, 19:23:33
Eu nu am folosit niciodata coada cu pointeri la problemele care le-am rezolvat si nu stiu de ce ar fi folositoare, singura diferenta e ca coada cu pointeri merge mai incet :). Oricum daca motivul folosiri unei cozi cu pointeri este economia de memorie in cazul cel mai rau cand ambele cozi sunt pline coada cu pointeri ocupa mai mult spatiu. Nu ar trebui sa fie problema incadrarea in timp sursa comisiei care implementeaza exact ce este explicat in articol ruleaza in 0.5 pe cel mai greu test si limita e 0.8.


Titlul: preONI 2005 runda #2
Scris de: Andreica din Martie 04, 2005, 20:40:48
La problema Lacusta de la OJI am implementat o coada pe un vector coada[][2] si am luat 60 puncte. Apoi am incercat cu alocare dinamica si cu pointeri si mi-a dat 100, fara sa modific programul in sine . Stiu si eu ca pointerii incetinesc programul dar daca nu i-am folosit in programul meu la testul 5 imi da eroare(de fapt in borland cand fac debug cu f8 imi ruleaza bine functiile dar la iesire din program ... crash).

#define MAX 101
Ma-m gandit ca poate coada[MAX*MAX][2] nu ajunge ca dimensiune dar nu merge nici coada[MAX*MAX*MAX][2];

Poate stie cineva motivul?

PS. Am folosit dev - c++ pentru ceva economie de timp;