•DITzoneC
|
 |
« : Martie 04, 2007, 14:07:38 » |
|
Aici puteţi discuta despre problema Ograzi.
|
|
|
Memorat
|
|
|
|
•Adix
Strain
Karma: -9
Deconectat
Mesaje: 44
|
 |
« Răspunde #1 : Martie 06, 2007, 00:04:58 » |
|
O solutie in care se sorteaza vectorul de ograzi si apoi se cauta binar fiecare oaie nu ar putea lua 100 de puncte .. dar 70 .. daca nu de ce ? .. Eu am implementat algoritmu asta si iau numa 40 de puncte (pe un singur test iau TLE  ) iar pe restu 5 teste iau WA  si nu inteleg de ce 
|
|
|
Memorat
|
|
|
|
•DITzoneC
|
 |
« Răspunde #2 : Martie 06, 2007, 00:10:45 » |
|
Pai ce cauti tu binar? Ar trebui sa cauti vreo patru chestii. O rezlvare de complexitate O(m log n) ar trebui sa ia cam 50 de puncte. Arunca o privire peste solutia oficiala.
|
|
|
Memorat
|
|
|
|
•Adix
Strain
Karma: -9
Deconectat
Mesaje: 44
|
 |
« Răspunde #3 : Martie 06, 2007, 00:36:48 » |
|
Pai caut (pe scurt) x>=ograda si x<=ograda+latime , analog pt y  ; m-am uitat peste solutia oficiala dar la linii de baleiere si hashuri m-am pierdut 
|
|
« Ultima modificare: Martie 06, 2007, 00:38:41 de către Suciu Adrian »
|
Memorat
|
|
|
|
•Cosmin
|
 |
« Răspunde #4 : Martie 06, 2007, 01:23:29 » |
|
Ai luat 40 de puncte cu asa ceva? Tare ...
|
|
|
Memorat
|
|
|
|
•cretu
Strain
Karma: 7
Deconectat
Mesaje: 15
|
 |
« Răspunde #5 : Martie 06, 2007, 10:23:38 » |
|
Pai caut (pe scurt) x>=ograda si x<=ograda+latime , analog pt y  ; m-am uitat peste solutia oficiala dar la linii de baleiere si hashuri m-am pierdut  Si eu am facut aceeasi chestie si tot 40 am luat...incearca un test de forma 3 2 2 2 2 2 1 6 4 5 5 2 2 7 In mod normal ar trebui sa iti pice, deoarece oaia de coordonate (2, 7) are acelasi x cu o ograda din care nu face parte si o omiti la cautare...
|
|
« Ultima modificare: Martie 06, 2007, 10:30:17 de către Musina Rares »
|
Memorat
|
I wuv C++.
|
|
|
•Adix
Strain
Karma: -9
Deconectat
Mesaje: 44
|
 |
« Răspunde #6 : Martie 06, 2007, 10:54:56 » |
|
Imi da 0 ... e corect ? Eu nu verific cu cautarea binara doar x'ul (practic am 2 cautari in una) : daca x'ul oii apartine de o ograda .. de fapt dupa ce ma complic  : if(x<ogr[c][0]){ dr=c-1;continue;} if(x>ogr[c][0]+w){ st=c+1;continue;} if(x>=ogr[c][0]&&x<=ogr[c][0]+w){ if(y<ogr[c][1]){ dr=c-1;continue;} if(y>ogr[c][1]+h){ st=c+1;continue;} if(y>=ogr[c][1]&&y<=ogr[c][1]+h){ return 1;}
Asta e cautarea binara x,y is coordonatele oii, c ii (st+dr)/2 , iar ogr ii vectorul de ograzi sortat mai intai dupa x si apoi dupa y. 
|
|
|
Memorat
|
|
|
|
•cretu
Strain
Karma: 7
Deconectat
Mesaje: 15
|
 |
« Răspunde #7 : Martie 06, 2007, 11:23:20 » |
|
raspunsul e 1...fa si pe foaie-asa o sa intelegi mai bine unde nu iti merge...
|
|
|
Memorat
|
I wuv C++.
|
|
|
•Adix
Strain
Karma: -9
Deconectat
Mesaje: 44
|
 |
« Răspunde #8 : Martie 06, 2007, 12:43:28 » |
|
La testul tau imi da rezultatul 1 dar tot 40 de puncte iau  .. Cred ca o sa ma resemnez 
|
|
|
Memorat
|
|
|
|
•cos_min
|
 |
« Răspunde #9 : Martie 06, 2007, 12:48:28 » |
|
5 7 2 2 2 2 6 2 4 5 7 7 1 6 5 2 8 5 1 5 8 8 2 7 1 6 1 7
Raspunsul este 4.
|
|
|
Memorat
|
vid...
|
|
|
•Adix
Strain
Karma: -9
Deconectat
Mesaje: 44
|
 |
« Răspunde #10 : Martie 06, 2007, 12:49:48 » |
|
Raspunsul este 4. Atata primesc si eu ... am incercat aproape totul in afara de solutia oficiala .. oricum algoritmul meu teoretic ar trebui sa mearga 
|
|
|
Memorat
|
|
|
|
•devilkind
|
 |
« Răspunde #11 : Martie 06, 2007, 15:19:43 » |
|
Pai caut (pe scurt) x>=ograda si x<=ograda+latime , analog pt y Tongue ; m-am uitat peste solutia oficiala dar la linii de baleiere si hashuri m-am pierdut Very Happy Cry adik u cauti binar nr de oi care se incadreaza intre x-urile celor 2 ograzi si apoi intre y-urile lor. adik dak ai ograda x1 y1,x2 y2 u verifica cate oi ai intre x1 si x2 si cate oi ai intre y1 si y2. Daca asta faci pai atunci u ce faci cu cele 2 rezultate??
|
|
« Ultima modificare: Martie 06, 2007, 15:27:13 de către Andrei Grigorean »
|
Memorat
|
|
|
|
•Adix
Strain
Karma: -9
Deconectat
Mesaje: 44
|
 |
« Răspunde #12 : Martie 06, 2007, 15:34:22 » |
|
dik u cauti binar nr de oi care se incadreaza intre x-urile celor 2 ograzi si apoi intre y-urile lor. adik dak ai ograda x1 y1,x2 y2 u verifica cate oi ai intre x1 si x2 si cate oi ai intre y1 si y2. Daca asta faci pai atunci u ce faci cu cele 2 rezultate?? Nu... eu am un vector sortat de ograzi ({1,2},{1,5},{3,4},{3,8}) (un exemplu) citesc coordonatele oii din fisier(x,y) si fac cautarea binara astfel: cat timp(dr>st) c=(st+dr)/2 daca x(oaie)<x(ograda[c]) atunci dr=c-1; daca x(oaie)>x(ograda[c]+latime ) atunci st=c+1 daca(x(oaie) apartine intervalului (ograda[c],ograda[c]+latime) atunci daca y(oaie)<y(ograda[c]) atunci dr=c-1; daca y(oaie)>y(ograda[c]+inaltime) atunci st=c+1; daca y(oaie) apartine intervalului (ograda[c],ograda[c]+inaltime) atunci incrementez numarul oilor; termin cautarea; sfarsit cat timp
Sper ca ai inteles ideea 
|
|
|
Memorat
|
|
|
|
•astronomy
|
 |
« Răspunde #13 : Martie 06, 2007, 21:51:11 » |
|
Nu cred ca o sa stea cineva sa iti gaseasca un contraexemplu pentru algoritmul tau, in schimb poti sa iti generezi tu niste teste si sa compari rezultatul tau cu un program simplu O(N*M). Cand ai gasit un test pe care nu iti da aceleasi valori faci un debug 
|
|
|
Memorat
|
|
|
|
•Adix
Strain
Karma: -9
Deconectat
Mesaje: 44
|
 |
« Răspunde #14 : Martie 06, 2007, 21:57:19 » |
|
Nu cred ca o sa stea cineva sa iti gaseasca un contraexemplu pentru algoritmul tau, in schimb poti sa iti generezi tu niste teste si sa compari rezultatul tau cu un program simplu O(N*M). Cand ai gasit un test pe care nu iti da aceleasi valori faci un debug  Mersi de idee .. nu m-am gandit la asta 
|
|
|
Memorat
|
|
|
|
•y2k
Strain
Karma: -3
Deconectat
Mesaje: 22
|
 |
« Răspunde #15 : Martie 07, 2007, 18:47:22 » |
|
Am incercat sa implementez solutia prezentata de voi... dar nu stiu unde am gresit de iau doar 50 de puncte, la celelalte teste primesc TLE... ar trebui sa fac functia de dispersie mai buna?
|
|
|
Memorat
|
|
|
|
•Cosmin
|
 |
« Răspunde #16 : Martie 08, 2007, 10:16:52 » |
|
tu implementezi propriul tau hash_map sau il folosesti pe cel din stl?
|
|
|
Memorat
|
|
|
|
•fireatmyself
|
 |
« Răspunde #17 : Martie 08, 2007, 10:22:08 » |
|
incearca sa parsezi citirea. daca nici asa nu merge inseamna ca nu ai reusit sa dezvolti un algoritm de complexitate optima ( O(N+M) ).
|
|
|
Memorat
|
Viata e scurta. Daca nu o putem lungi, macar s-o facem lata.
|
|
|
•y2k
Strain
Karma: -3
Deconectat
Mesaje: 22
|
 |
« Răspunde #18 : Martie 08, 2007, 11:18:41 » |
|
incearca sa parsezi citirea. daca nici asa nu merge inseamna ca nu ai reusit sa dezvolti un algoritm de complexitate optima ( O(N+M) ).
 am facut citirea cu fgets, si cred ca am respectat indicatiile.....
|
|
|
Memorat
|
|
|
|
•wefgef
|
 |
« Răspunde #19 : Martie 08, 2007, 14:46:49 » |
|
Cauta pe google diferite functii de hash, si alege una care iti intra in timp  . Incercarea moarte n-are.
|
|
|
Memorat
|
omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
|
|
|
•Fayed
Client obisnuit

Karma: -24
Deconectat
Mesaje: 62
|
 |
« Răspunde #20 : Martie 10, 2013, 13:54:14 » |
|
Eu incerc sa fac O(n*m), adica sa verific pentru fiecare oita daca intra intr-o ograda. Imi da raspuns corect doar in unele cazuri si chiar nu inteleg ce imi scapa la implementare : Oita[j] coord unei oi si Ograd coord din stanga jos a ograzii.
Nmax = M; for(register int i=1;i<=N;++i) for(register int j=1;j<=M;++j) if(Oita[j].x <= Ograd.x +H && Oita[j].x >= Ograd.x && Oita[j].y <= Ograd.y +L && Oita[j].y >= Ograd.y) Nmax--;
printf("%d",Nmax);
|
|
|
Memorat
|
|
|
|
|