•devilkind
|
 |
« Răspunde #25 : Februarie 11, 2009, 00:22:54 » |
|
programul tau pare ca ia TLE din cauza ca are complexitate prea mare. Daca am inteles bine toata matricea la fiecare pas. Cum pot fi aproximativ N^2 pasi * N^2 pe fiecare pas => N^4 care cred ca e cam mare ptr problema asta.
|
|
|
Memorat
|
|
|
|
•gabor_oliviu1991
|
 |
« Răspunde #26 : Februarie 11, 2009, 12:06:27 » |
|
probabil ca din cauza asta. oricum, a mai facut cineva prob cu dinamica de 100?
|
|
|
Memorat
|
|
|
|
•Pepelea_Flaviu
Client obisnuit

Karma: 30
Deconectat
Mesaje: 98
|
 |
« Răspunde #27 : Februarie 11, 2009, 14:24:20 » |
|
De ce nu faci cu Lee ?
|
|
|
Memorat
|
|
|
|
•vlad_oltean
Strain
Karma: 2
Deconectat
Mesaje: 25
|
 |
« Răspunde #28 : Martie 13, 2009, 13:17:05 » |
|
tu faci minimul daca nu e -1... si ce faci daca in N, E, V, si S e pom si tu nu poti ajunge in punctul respectiv?  ... ceva de genul: 0 0 -1 0 0 0 -1 0 -1 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0
daca fisierul .in ar arata cam asa cat ar fi raspunsul pt exemplul asta?
|
|
|
Memorat
|
|
|
|
•gabor_oliviu1991
|
 |
« Răspunde #29 : Martie 13, 2009, 13:35:53 » |
|
0. pt ca nu poti iesi din [2,3]
|
|
|
Memorat
|
|
|
|
•Addy.
Strain
Karma: -4
Deconectat
Mesaje: 30
|
 |
« Răspunde #30 : Aprilie 06, 2009, 15:41:01 » |
|
pai si de ce ar trebui sa treaca prin [2,3]? scopul este sa ajunga in [5,5]. eu am incorrect pe testul 8, nu-mi dau seama de ce. sunt cazuri particulare?
|
|
|
Memorat
|
|
|
|
•marcelcodrea
|
 |
« Răspunde #31 : Aprilie 06, 2009, 15:50:03 » |
|
Scopul este sa pleci de la o poarta si sa ajungi la alta. Scrieti un program care sa determine numarul minim de dale necesare pentru construirea unei alei continue de la o poarta la cealalta.
|
|
|
Memorat
|
Imperiile coloniale au murit... Germania Nazistä a murit... Uniunea Sovieticä a murit... Si nici Uniunea Europeanä nu se simte prea bine
|
|
|
•Addy.
Strain
Karma: -4
Deconectat
Mesaje: 30
|
 |
« Răspunde #32 : Aprilie 06, 2009, 15:55:59 » |
|
pe exemplul ala era scopul sa ajunga in [5,5]. L.E.: deci e posibil ca cele 2 porti sa nu fie in zone de margine? adica sa poata fi in interior?  even later edit: nvm, am gasit.
|
|
« Ultima modificare: Aprilie 07, 2009, 18:12:14 de către Adrian Draghici »
|
Memorat
|
|
|
|
•udrescu_cristi
Strain
Karma: 0
Deconectat
Mesaje: 5
|
 |
« Răspunde #33 : Aprilie 30, 2009, 17:56:24 » |
|
nu iau decat 80 pct cu un lee clasic..nu inteleg care e problema..in mod normal ar trebui sa mearga.. 
|
|
|
Memorat
|
|
|
|
•Roswen
Strain
Karma: 0
Deconectat
Mesaje: 3
|
 |
« Răspunde #34 : Februarie 23, 2010, 10:32:30 » |
|
ce e special pe testul 4? am facut un lee clasic si iau numai 90 de pcte, imi pica pe testul 4 cu incorect. Este ceva caz exceptie?
|
|
|
Memorat
|
|
|
|
|
•R.A.R
Strain
Karma: -7
Deconectat
Mesaje: 37
|
 |
« Răspunde #36 : Iunie 26, 2010, 23:54:36 » |
|
Rezolvai in mod recursiv ?
|
|
|
Memorat
|
|
|
|
•andunhill
|
 |
« Răspunde #37 : Iunie 27, 2010, 08:43:56 » |
|
nu. Pur si simplu la sursa de care lua memory limit exceeded am modificat ceva la vecini si am luat 100.
|
|
|
Memorat
|
|
|
|
•Oancea.Catalin
Client obisnuit

Karma: -3
Deconectat
Mesaje: 75
|
 |
« Răspunde #38 : Februarie 15, 2011, 23:50:41 » |
|
eu iau 80 (cu "incorect" pe testul 6 si testul 8 ) matricea are la inceput toate elementele 0 si cele cu pomi le pun -1; in punctul din care plec pun 1. daca a[i][j]==x si a[i+1][j]==0 atunci in a[i+1][j] pun x+1 si pun in coada i si j si pentru fiecare element din coada marchez vecinii cand a ajuns la finish afiseaza ce e gresit?
|
|
|
Memorat
|
|
|
|
•eudanip
|
 |
« Răspunde #39 : Februarie 16, 2011, 14:33:42 » |
|
Poate ai gresit ceva la implementare sau ai uitat un caz particular. Nu trebuie neaparat algoritmul sa fie gresit. Din moment ce ai luat 80 pct presupun ca ai o gandire corecta doar ca ai uitat un caz sau doua.
|
|
|
Memorat
|
|
|
|
•Oancea.Catalin
Client obisnuit

Karma: -3
Deconectat
Mesaje: 75
|
 |
« Răspunde #40 : Februarie 16, 2011, 19:06:42 » |
|
pai folosesc algoritmul Lee ... deci ar trebui sa mearga... nu stiu ce cazuri speciale ar putea sa apara. E obligatoriu sa ajunga la tinta? Sau exista cazuri in care nu se poate ( adica toti vecinii sa fie pomi )? 
|
|
|
Memorat
|
|
|
|
•SpiderMan
|
 |
« Răspunde #41 : Februarie 16, 2011, 19:15:20 » |
|
Eu la prima sursa am avut MLE pe testele 6 si 8. Vezi daca limitele sunt puse bine, daca ai ceva gen short si trebuie int .... Sunt teste mari.
|
|
|
Memorat
|
|
|
|
•Oancea.Catalin
Client obisnuit

Karma: -3
Deconectat
Mesaje: 75
|
 |
« Răspunde #42 : Februarie 16, 2011, 20:21:04 » |
|
nu ... le-am avut long long  si luam MLE iar acum le am int si imi da WA... dar mai mult ma deranjeaza ca o sursa cu "forta bruta" cu o complexitate de O(n^4) . ia 90 de puncte... si la mine coada e de 70000( oricum cred ca daca as incerca sa accesez coada la elementul 70001 ar da killed by signal ... in nici un caz WA
|
|
|
Memorat
|
|
|
|
•SpiderMan
|
 |
« Răspunde #43 : Februarie 16, 2011, 20:27:34 » |
|
Pentru ca long long e mai costisitor, luai TLE si acum int poate nu e suficient. Incearca sa iei testele ( daca ai de unde ) si sa vezi daca merge cu long long , sau cu int.
|
|
|
Memorat
|
|
|
|
•pauldb
|
 |
« Răspunde #44 : Februarie 16, 2011, 20:55:12 » |
|
nu ... le-am avut long long  si luam MLE iar acum le am int si imi da WA... dar mai mult ma deranjeaza ca o sursa cu "forta bruta" cu o complexitate de O(n^4) . ia 90 de puncte... si la mine coada e de 70000( oricum cred ca daca as incerca sa accesez coada la elementul 70001 ar da killed by signal ... in nici un caz WA M-am uitat pe sursa ta si am vazut o greseala. Atunci cand verifici sa nu depasesti limitele matricii, verifici de ambele dati relativ la n si niciodata relativ la m. In plus, am observat ca tu in sursa ai 4 if-uri, cate unul corespunzator fiecarei directii. Acest lucru se poate simplifica (din punct de vedere al implementarii) folosind un for, astfel: int dirx[4] = {-1, 0, 1, 0}; int diry[4] = {0, -1, 0, 1};
...
for (int i = 1; i <= lungime_coada; ++i) { ... for (int j = 0; j < 4; ++j) { int x = coada_x[i] + dirx[j]; int y = coada_y[i] + diry[j]; // verificari pentru x si y si eventual adaugarea pozitiei in coada } ... }
Ideea poate fi aplicata si la alte probleme: cu 8 directii, cu cai pe tabla de sah, etc.
|
|
|
Memorat
|
Am zis 
|
|
|
•Oancea.Catalin
Client obisnuit

Karma: -3
Deconectat
Mesaje: 75
|
 |
« Răspunde #45 : Februarie 16, 2011, 21:09:26 » |
|
pai verific la N pentru ca matricea are dimensiuni NxN si in sursa nu am decat un for  (defapt 2 .. cu cel de la citirea obstacolelor) sigur te-ai uitat pe sursa mea?
|
|
|
Memorat
|
|
|
|
•pauldb
|
 |
« Răspunde #46 : Februarie 16, 2011, 22:43:59 » |
|
Da, dar nu citisem atent problema.  M-am uitat din nou si gresesti la ultima conditie, la care iesi din matrice (intri pe linia 0). Daca folosesti metoda de care iti povesteam, ai sanse mult mai mici sa gresesti la astfel de conditii.
|
|
|
Memorat
|
Am zis 
|
|
|
•Oancea.Catalin
Client obisnuit

Karma: -3
Deconectat
Mesaje: 75
|
 |
« Răspunde #47 : Februarie 17, 2011, 19:50:46 » |
|
da ... asa e  multumes 
|
|
|
Memorat
|
|
|
|
•flaviusc11
Strain
Karma: 1
Deconectat
Mesaje: 26
|
 |
« Răspunde #48 : Martie 30, 2011, 14:49:05 » |
|
Eu de ce iau doar 70 de puncte pe urm sursa? #include<cstdio> using namespace std; int lb[175][175],n; void drum(int k, int l, int c) { if(l+1<n) if(lb[l+1][c]>k+1) { lb[l+1][c]=k+1; drum(k+1,l+1,c); } if(l>0) if(lb[l-1][c]>k+1) { lb[l-1][c]=k+1; drum(k+1,l-1,c); } if(c+1<n) if(lb[l][c+1]>k+1) { lb[l][c+1]=k+1; drum(k+1,l,c+1); } if(c>0) if(lb[l][c-1]>k+1) { lb[l][c-1]=k+1; drum(k+1,l,c-1); } } int main() { freopen("alee.in","r", stdin); freopen("alee.out","w",stdout); int aux,m,i,j,x,y,x2,y2; scanf("%d %d",&n,&m); aux=n*n; for(i=0;i<n;i++) for(j=0;j<n;j++) lb[i][j]=aux; for(i=1;i<=m;i++) { scanf("%d %d",&x,&y); lb[x-1][y-1]=-1;} scanf("%d %d %d %d",&x,&y,&x2,&y2); lb[x-1][y-1]=1; drum(1,x-1,y-1); printf("%d\n", lb[x2-1][y2-1]); return 0; }
|
|
|
Memorat
|
|
|
|
•jupanubv92
Client obisnuit

Karma: 19
Deconectat
Mesaje: 74
|
 |
« Răspunde #49 : Martie 30, 2011, 15:18:01 » |
|
Din cate am vazut tu ai TLE si MLE. Memorie prea multa nu ţi-ai alocat, deci cel mai probabil depăşeşti limita de memorie a stivei, din cauză că faci recursiv. Îţi recomand să încerci să faci lee-ul cu o coadă, pentru a evita situaţia asta.
|
|
|
Memorat
|
|
|
|
|