•amadaeus
Client obisnuit

Karma: 28
Deconectat
Mesaje: 93
|
 |
« Răspunde #75 : Aprilie 04, 2007, 23:23:37 » |
|
Pai implementezi o rezolvare brute-force (care sigur te conduce la solutia corecta) si faci si un generator de teste. Pentru fiecare test, compari rezultatul obtinut prin brute-force cu rezultatul programului pe care vrei sa il verifici (poti face si un script bash care face chestia asta de 100 de ori, adica genereaza cate un test, ruleaza brute-ul, ruleaza programul tau si compara rezultatele). 
|
|
|
Memorat
|
"one of these days I'm going to cut you into little pieces..."
|
|
|
•gabitzish1
|
 |
« Răspunde #76 : Aprilie 04, 2007, 23:25:54 » |
|
adik programul brut force ar insemna o rezolvare copilareasca (in sensul k luam totul pas cu pas) , presupunand o complexitate mare...
|
|
|
Memorat
|
|
|
|
•Bluedrop_demon
Client obisnuit

Karma: -3
Deconectat
Mesaje: 66
|
 |
« Răspunde #77 : Aprilie 04, 2007, 23:27:21 » |
|
Dap! 
|
|
|
Memorat
|
|
|
|
•gabitzish1
|
 |
« Răspunde #78 : Aprilie 04, 2007, 23:33:44 » |
|
o sa trebuiasca sa ma obisnuiesc cu chestii de aastea.... un brut force nu necesita prea mult timp pt rezolvare? /:)
|
|
|
Memorat
|
|
|
|
•Bluedrop_demon
Client obisnuit

Karma: -3
Deconectat
Mesaje: 66
|
 |
« Răspunde #79 : Aprilie 04, 2007, 23:39:33 » |
|
Se poate intampla si asta, dar de cele mai multe ori nu. De exemplu un backtracking daca il stii bine il scrii in 10 minute maxim si dupa aia poti sta sa astepti 10-20 minute sa rezolve un test. (In acest timp poti lucra la altceva lasandu-l sa ruleze intr-o alta fereastra). Apoi te uiti ce rezultat a dat si vezi daca poti descoperi o formula sau o dinamica... ceva cu complexitate mai mica. La fel si la grafuri... daca ti se cere un anumit drum pe 100000 de noduri stii ca trebuie sa gasesti un algoritm foarte rapid, dar pana una alta bagi un Roy-Floyd ca poate apare o relatie 
|
|
|
Memorat
|
|
|
|
•stef2n
|
 |
« Răspunde #80 : Aprilie 04, 2007, 23:46:10 » |
|
La fel si la grafuri... daca ti se cere un anumit drum pe 100000 de noduri stii ca trebuie sa gasesti un algoritm foarte rapid, dar pana una alta bagi un Roy-Floyd ca poate apare o relatie  Ai de gand sa astepti un Roy-Floyd pe 100000 de noduri?  P.S. Scuze ca e cam off-topic reply-ul meu.
|
|
|
Memorat
|
Exista 10 categorii de oameni: cei care inteleg sistemul binar si cei care nu il inteleg.
|
|
|
•Bluedrop_demon
Client obisnuit

Karma: -3
Deconectat
Mesaje: 66
|
 |
« Răspunde #81 : Aprilie 05, 2007, 00:17:30 » |
|
Tot off topic scuze: Pai vroiam sa subliniez ca intr-adevar poti sa si astepti mult. Dar daca folosesti brute-force uneori nu ai de ales 
|
|
|
Memorat
|
|
|
|
•nparfene2004
Client obisnuit

Karma: 22
Deconectat
Mesaje: 81
|
 |
« Răspunde #82 : Ianuarie 21, 2009, 22:23:00 » |
|
Iau 90 de puncte la problema... Nu mai stiu ce sa optimizez...
Fac O(n) cu deque... orice element intra in deque o data si iese cel mult o data, deci cam un milion de operatii. De ce atunci TLE la un test mare? Eu credeam ca pe linux fac in 0.18 sec mai mult de 10 milioane de operatii (nu impartiri). Nu?
|
|
|
Memorat
|
|
|
|
•Mishu91
|
 |
« Răspunde #83 : Ianuarie 21, 2009, 22:53:34 » |
|
Incearca sa parsezi citirea
|
|
|
Memorat
|
|
|
|
•nparfene2004
Client obisnuit

Karma: 22
Deconectat
Mesaje: 81
|
 |
« Răspunde #84 : Ianuarie 22, 2009, 07:00:04 » |
|
Scuze, ce inseamna sa parsez citirea? un exemplu?
|
|
|
Memorat
|
|
|
|
•gabor_oliviu1991
|
 |
« Răspunde #85 : Ianuarie 22, 2009, 07:13:25 » |
|
citesti numarul ca sir de caractere, si dupa il transformi in numar propriu-zis.
|
|
|
Memorat
|
|
|
|
•nparfene2004
Client obisnuit

Karma: 22
Deconectat
Mesaje: 81
|
 |
« Răspunde #86 : Ianuarie 22, 2009, 21:53:40 » |
|
Adica
scanf("%s",sir) ; x = atoi(sir) ;
prin asta s-ar intelege parsare?
|
|
|
Memorat
|
|
|
|
•sima_cotizo
|
 |
« Răspunde #87 : Ianuarie 22, 2009, 22:12:54 » |
|
Da, dar foloseste fgets() in loc de scanf() si poti incerca si sa implementezi atoi() de mana (cred ca e mai rapid).
|
|
|
Memorat
|
|
|
|
•Sorin_Ionut
Client obisnuit

Karma: 14
Deconectat
Mesaje: 53
|
 |
« Răspunde #88 : Martie 26, 2009, 10:32:50 » |
|
Parsarea chiar face difrenta in problema asta (  doar pt cei cu 90p ) Sursa fara parsare http://infoarena.ro/job_detail/288827 (90p) Sursa cu parsare http://infoarena.ro/job_detail/288886 (100p) detasat  Uitati-va numai la timpi (parsare face totul , algoritmul este aceelasi (deque)) Pt cine nu stie sa faca parsare , dati-mi un pm si va ajut ! Multa bafta !
|
|
|
Memorat
|
|
|
|
•Alexa_ioana_14
Strain
Karma: 6
Deconectat
Mesaje: 37
|
 |
« Răspunde #89 : August 17, 2009, 17:15:13 » |
|
Fara parsare obtin 80p. Cu parsare 50 [pe restul WA] Cam asa arata parsarea pe care o fac: scanf("%d%d\n",&n,&k); fgets(s,N,stdin); for (int i=0; s[i]&&s[i]!=10; ++i) { int nr=0; int semn=1; if (s[i]=='-') { semn=-1;++i; } bool ok=false; while(s[i]>='0'&&s[i]<='9'&&s[i]&&s[i]!=10) { nr=nr*10+(s[i]-'0');++i;ok=true; } if (ok) v[++num]=nr*semn; } Imi poate spune cineva unde gresesc? pls
|
|
« Ultima modificare: August 17, 2009, 17:20:45 de către Antoche Ioana Alexandra »
|
Memorat
|
|
|
|
•narcyyssss
Strain
Karma: 0
Deconectat
Mesaje: 2
|
 |
« Răspunde #90 : Noiembrie 13, 2010, 14:37:52 » |
|
|
|
|
Memorat
|
|
|
|
•SpiderMan
|
 |
« Răspunde #91 : Noiembrie 13, 2010, 14:39:29 » |
|
Problema se face cu ajutorul unui deque.
|
|
|
Memorat
|
|
|
|
•toni2007
|
 |
« Răspunde #92 : Noiembrie 14, 2010, 02:06:46 » |
|
Problema se face cu ajutorul unui deque. Se face fara deque.
|
|
|
Memorat
|
|
|
|
•devilkind
|
 |
« Răspunde #93 : Noiembrie 14, 2010, 03:28:06 » |
|
@toni: Esti sigur? Nu stiu ce solutie ai tu dar sunt destul de sigur ca merge si cu deque. De altfel as fi curios cum o faci fara deque.
|
|
|
Memorat
|
|
|
|
•toni2007
|
 |
« Răspunde #94 : Noiembrie 14, 2010, 12:22:08 » |
|
Da, ai dreptate, se pare ca eu o facusem prost. Aseara m-am uitat pe sursa mea (de prin 2008), si in loc sa scot din deque din dreapta, eu cautam binar pozitia si setam capatul din dreapta acolo. Am crezut ca e o coada cu ceva smen.
|
|
|
Memorat
|
|
|
|
•pauldb
|
 |
« Răspunde #95 : Noiembrie 14, 2010, 14:33:01 » |
|
1 - 0 la spiderman. 
|
|
|
Memorat
|
Am zis 
|
|
|
•SpiderMan
|
 |
« Răspunde #96 : Noiembrie 14, 2010, 17:12:36 » |
|
1 - 0 la spiderman.  Nu cred ca asta poate fi tratata ca o "batalie", poate ca el initial a vrut sa ajute, intentia conteaza  .
|
|
|
Memorat
|
|
|
|
•toni2007
|
 |
« Răspunde #97 : Noiembrie 14, 2010, 23:49:52 » |
|
1 - 0 la spiderman.  Corect 
|
|
|
Memorat
|
|
|
|
•valentin.harsan
Strain
Karma: 33
Deconectat
Mesaje: 41
|
 |
« Răspunde #98 : Decembrie 14, 2010, 18:38:28 » |
|
af facut o sursa cu deque COD: #include<iostream> #include<fstream> using namespace std; const int N=500001; int a,s,smax,dr,st=1,d[N],v[N],n,k; void stanga (int i) { while ((i-d[st]>=k) && (v[d[st]]<v[d[st+1]])) { ++st; } }
void dreapta (int i) { while (st<=dr && v[d[dr]]>=v[i]) { --dr; } }
void adauga (int i) { d[++dr]=i; }
ifstream aa("secventa.in"); ofstream ss("secventa.out"); int main () { smax=-10000; int i; aa >> n >> k; for (i=1;i<=n;++i) { aa >> v[i ]; stanga(i); dreapta(i); adauga(i); if (i>=k && v[d[st]]>smax) { smax=v[d[st]]; a=i-k+1; s=i; } } ss << a << " " << s << " " << smax; return 0; } si iau 10 pct. nu inteleg unde am gresit. ma poate ajuta cineva? Editat de moderator: foloseste tagurile [ code ] si [ /code ] cand postezi cod. Lasa spatiu intre parantezele drepte si litera i, ca altfel textul ce urmeaza va fi italic.
|
|
« Ultima modificare: Decembrie 14, 2010, 18:43:56 de către Gabriel Bitis »
|
Memorat
|
|
|
|
•pauldb
|
 |
« Răspunde #99 : Decembrie 14, 2010, 19:16:39 » |
|
Functia dreapta e problema. Incearca sa citesti mai multe aici.
|
|
|
Memorat
|
Am zis 
|
|
|
|