Pagini: [1] 2   În jos
  Imprimă  
Ajutor Subiect: Buguri la concursurile de programare si nu numai  (Citit de 12401 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
Cosmin
Echipa infoarena
Nu mai tace
*****

Karma: 351
Deconectat Deconectat

Mesaje: 1.799



Vezi Profilul
« : Martie 18, 2012, 11:34:24 »

http://infoarena.ro/blog/buguri-frecvente
Memorat
maritim
Vorbaret
****

Karma: 59
Deconectat Deconectat

Mesaje: 176



Vezi Profilul
« Răspunde #1 : Martie 18, 2012, 11:46:35 »

Uit sa sortez elementele deoarece toate testele date aveau deja elementele sortate Smile !
Memorat
danalex97
Vorbaret
****

Karma: 54
Deconectat Deconectat

Mesaje: 192



Vezi Profilul
« Răspunde #2 : Martie 18, 2012, 11:48:20 »

Uit sa returnez rezultatul modulo X si uit sa sortez elementele daca toate exemplele date aveau deja elementele sortate  Aha
Memorat
alexalbu95
Client obisnuit
**

Karma: -10
Deconectat Deconectat

Mesaje: 57



Vezi Profilul
« Răspunde #3 : Martie 18, 2012, 12:53:11 »

Am declarat vectorul prea mare si am primit MLE. Am pierdut 100 pct pt asta la OJI 2012.
Memorat
bogdan2412
Echipa infoarena
Nu mai tace
*****

Karma: 410
Deconectat Deconectat

Mesaje: 951



Vezi Profilul
« Răspunde #4 : Martie 18, 2012, 12:54:39 »

Am declarat vectorul prea mare si am primit MLE. Am pierdut 100 pct pt asta la OJI 2012.

+1... stupid de des mi s-a intamplat Smile
Memorat
S7012MY
Nu mai tace
*****

Karma: 26
Deconectat Deconectat

Mesaje: 648



Vezi Profilul
« Răspunde #5 : Martie 18, 2012, 12:55:16 »

Cod:
for (i = 0; i < n; i++)
 for (j = 0;j < m; i++)

Foarte frecvent la mine, mai ales pe topcoder.

Am declarat vectorul prea mare si am primit MLE. Am pierdut 100 pct pt asta la OJI 2012.

Int in loc de short. -100 la oji 2011. Am avut mare noroc ca am trecut.
Cred ca toata lumea a patit.
Memorat
thesilverhand13
Strain
*

Karma: 9
Deconectat Deconectat

Mesaje: 32



Vezi Profilul
« Răspunde #6 : Martie 18, 2012, 13:17:31 »

Citat
Cred ca toata lumea a patit.
Tu macar te-ai calificat.Eu am ramas acasa pentru un micut "bugestain" de asta... Cry.Ehh, poate la anul  Winner 1st place.

Later Edit: trebuia specificat mai sus daca nu e prea stupid,"evitarea" lasarii altor variabile in fisierul de iesire,gen matrice pentru debug...stuff like that  Tongue!
Memorat
caen1
Client obisnuit
**

Karma: 22
Deconectat Deconectat

Mesaje: 75



Vezi Profilul
« Răspunde #7 : Martie 18, 2012, 13:26:16 »

Uit sa lucrez pe parcursul anului si nu ajung la ONI. E tot un fel de bug Whistle
Memorat
a_h1926
Echipa infoarena
Nu mai tace
*****

Karma: 317
Deconectat Deconectat

Mesaje: 385



Vezi Profilul
« Răspunde #8 : Martie 18, 2012, 14:07:03 »

Eu am avut un bug in mingw, deoarece cand faceam debug, imi afisa ca sqrt (4)=0, la fel si cu sqrt (4.0), iar expresia pe care o trimiteam ca argument era 1.0*(...). Foloseam functia sqrt pentru ca aveam nevoie de radicalul unor patrate perfecte, asa ca am inlocuit-o (temporar, ca sa vad daca imi merge pe testele mele) cu un vector de 1 milion de elemente, int, in care aveam radicalii precalculati. Din pacate, la final, am uitat sa sterg acest vector din variabilele declarate, si am luat MLE pe toate testele si astfel, anul acesta, am pierdut 91 de puncte la OJI  Very Happy.
Memorat
thesilverhand13
Strain
*

Karma: 9
Deconectat Deconectat

Mesaje: 32



Vezi Profilul
« Răspunde #9 : Martie 18, 2012, 14:29:16 »

@ Heidelbacher Andrei: Dar,te-ai calificat Applause .Asta e important. Smile
Memorat
tzipleatud
De-al casei
***

Karma: 104
Deconectat Deconectat

Mesaje: 117



Vezi Profilul
« Răspunde #10 : Martie 18, 2012, 15:17:58 »

Anul trecut cand am fost la Grigore Moisil am folosit variabila j1 si nu am verificat daca CodeBlocks-ul e configurat pe compilatorul care trebuie. A rezultat -100 de puncte si de la Premiul 1 la ultimul loc   Brick wall . - foarte stupid
Memorat
fulgerulnegru
Client obisnuit
**

Karma: -17
Deconectat Deconectat

Mesaje: 92



Vezi Profilul
« Răspunde #11 : Martie 18, 2012, 17:04:29 »

Anul acesta la info am uitat sa nu mai citesc steletutele sa ma ajute in algorithm
si Tot asa de la primul la ultimul loc
Memorat
raduberinde
Strain
*

Karma: 13
Deconectat Deconectat

Mesaje: 26



Vezi Profilul
« Răspunde #12 : Martie 18, 2012, 17:22:25 »

La marimea arrayurilor: un bug specific un pic mai subtil a fost la dimensionarea arrayului pentru arbori de intervale: l-am facut 2*N, dar trebuia sa fie 2*<o putere de 2 cel putin N>. (N era 100000 si trebuia dimensiunea > 262144, eu am pus 200002).
Memorat
eudanip
Echipa infoarena
Nu mai tace
*****

Karma: 307
Deconectat Deconectat

Mesaje: 703



Vezi Profilul
« Răspunde #13 : Martie 18, 2012, 17:40:05 »

Greseli pe care le-am facut eu pe parcursul olimpiadelor:

- pentru cei de clasa a 5-a: vedeti ca ceasul are 24 de ore  Shocked. Nu uitati sa faceti % 24.

- pentru cei de clasa a 6-a: vedeti ca viata uneori e nasoala. Se poate intampla ca nu stiu cate concursuri la rand sa te prinzi de  probleme si totusi sa nu se lipeasca cifra 100 de ele  Fool. Singura modalitate este sa lucrati cat mai mult  Weightlift.

- pentru cei de clasa a 7-a: cititi foarte atent enuntul  Read This!. sa nu va treziti dupa concurs sa ziceti: "A stai  Aha!!!! Da ce credeam eu ca trebuie sa fac nu are absolut NICI o legatura cu cerinta problemei  Brick wall. Oare din acest motiv am luat 0  Huh?"

-pentru cei de clasa a 8-a:
1. vedeti cand cititi cu char ca cititi si spatiile (eu inca nu ma prind cum de imi dadea pe exemplu Rolling on the Floor Laughing)
2. vedeti sa faceti cast la long long cand inmultiti 2 inturi.(daca e nevoie  wink)
3. aveti grija cu indicii pe acolo (i seamana cu j dar nu sunt acelasi caracter  Surprised)
4. vedeti daca puteti sa folositi AIB in loc de Aint atunci ar fi de preferat AIB  Rolling Eyes(mai mult pentru JBOI)
5. daca nu ati luat maxim pe o problema sfatul meu este totusi sa verificati testele si sa le raportati  Evil or Very Mad. E posibil sa mai fie gresite.
6. Nu uitati sa tratati cazul de imposibilitate  d'oh!
7. Asigurativa ca faceti MODULO peste tot. Un singur loc daca ratati, ati pierdut suta   Bye bye.
 
-pentru cei de clasa a 9-a:
1. declarati memoria la numere mari cat trebuie  Whistle
2. de preferat sa folositu priority_queue si nu set-uri  Shame on you daca se poate
3. aveti grija deoarece sunteti obisnuiti sa declarati v[NMAX] si s-ar putea sa trebuiasca v[2*NMAX] Confused
4. dati nume la vectori si variabile cat mai sugestive  Think(sa nu va treziti ca un vector auxiliar se numeste A, exact ca si arborele de intervale)
5. cititi toate restrictiile problemei  Whistle
6. aveti grija la initializari la dinamici  Indifferent
7. rucsac cu baza 10^18 si long long merge mai prost decat rucsac cu baza 10^9 si int. de retinut  Thumb up

-pentru cei de clasa a 10-a:
1. daca cumva ati terminat in 2 ore din 5 sa nu stai cum am stat eu(like a boss  Cool). Testeaza nene  Read This! !!!!!!!!!
2. aveti grija la declaratii. sa puneti double daca e nevoie deoarece e nasol sa pierzi 70 pct pe o prostie ca asta  sad
3. sau si mai rau. dupa ce scrii 3 kilo de cod la un dijkstra mai ciudat sa gresesti un if  Mad la saturarea muchiilor si sa iei 0
4. eu la OJI am avut 2 surse. una cu baza 10 si una cu baza 10^9. am trimis sursa proasta desigur Fighting,  cea cu baza 10. Va rog sa nu faceti asta.   Cry

Cred ca am mai avut multe greseli dar momentan cam asta imi amintesc eu acum  Tongue.
Sa invatati read, sa va distrati  Dance, sa va relaxati Walkman si sigur o sa faceti macel  Guns.
Memorat
scipianus
Nu mai tace
*****

Karma: 129
Deconectat Deconectat

Mesaje: 345



Vezi Profilul
« Răspunde #14 : Martie 18, 2012, 18:36:46 »

MEGA-Like pentru postul lui Dani  Very Happy

Pot sa mai adaug si eu la lista ceva ce am patit anul asta la un concurs judetean (pe post de olimpiada locala a Vasluiului) : la o dinamica pe trei vectori am vrut sa folosesc o matrice M[3][] , iar in for-urile de dinamica bineinteles fiecare din cele 3 linii avea formula ei,dar eu in cele 3 if-uri de dinamica in loc sa am if(M[0]...) if(M[1]...) if(M[2]...) am facut if(M[0]...) if(M[1]...) if(M[1]...)  Whistle Ciudat e ca pe testele date mergea bine,iar pe altele cateva probabil mi-a fost lene sa le verific de mana  Embarassed Interesant ca a mers de 30pct asa, diferenta pana la 100 fiind de un singur caracter  Rolling Eyes

Sfatul meu : cand aveti timp ca mine (da,terminasem dupa o ora si mai aveam doua ore  Whistle ) faceti-va la fiecare problema (daca este posibil) un program brute (un back sau altceva) pentru a verifica corectitudinea implementarilor voastre  Smile
Memorat
cosmin79
Strain
*

Karma: 36
Deconectat Deconectat

Mesaje: 46



Vezi Profilul
« Răspunde #15 : Martie 18, 2012, 19:03:01 »

3 sfaturi care mi-ar fi fost utile daca le-as fi aplicat:
1) Cititi cu atentie problemele a.i. cerinta sa fie clara. Puneti intrebari daca sunteti nesiguri
2) Cel mai important e sa salvati problemele unde/cum trebuie. Degeaba munciti la probleme,daca le salvati prost. O greseala aparent nesemnificativa cum ar fi confundarea unui "o" cu un "0", dupa cum am experimentat si eu, va conduce cu siguranta la un punctaj rotund de 0 puncte.
3) Verificati tot timpul memoria folosita. Chiar daca memoria disponibila pare arhisuficienta, este de preferat sa verificati. Eu am reusit sa busesc memoria la o problema de la oni anul trecut la care erau 128 mb disponibili.
Succes!  Smile
Memorat
klamathix
Echipa infoarena
Nu mai tace
*****

Karma: 733
Deconectat Deconectat

Mesaje: 1.216



Vezi Profilul
« Răspunde #16 : Martie 18, 2012, 19:16:17 »

Ma bag si eu, ce eu n-am talent? Pimp

Problema interactiva. Scriu problema cu citire si scriere pentru modulul de interactie. Trebuie sa fac debug. Pun la comentarii cele pentru interactie (habar nu am de ce..) si imi scriu citire si scriere din fisier. Intre timp restructurez un pic codul si am un iterator folosit la afisare pe care trebuia sa-l tin permanent modulo 7.

Cod:

// printf("%d ",v[current][it]); varianta pentru interactie (nu mai retin exact care era diferenta).

if(it == 7) it = 0;

printf("%d ",v[current][it]);


Ok, si verific problema pe vreo 30 de teste, merge pe toate. In enunt scria ca inputul are n constant si numerele implicate in testare sunt random. Deci eram multumit, sigur merge.
Siiii sterg scrierea de la debug si o decomentez pe aia interactiva. Guess.. what..
Ca sa fie totul mai frumos, exemplul avea o anumita valoare 0 , astfel incat v[current][7] == v[current][0] == 0  Cool deci am primit feedback pozitiv pe exemplu. Am luat 0.
Nu fiti noobi cu debugul. Folositi cerr , folositi orice, dar nu lasati tampenii prin cod dupa ce ati terminat cu el.
Memorat
laurion
De-al casei
***

Karma: -41
Deconectat Deconectat

Mesaje: 102



Vezi Profilul
« Răspunde #17 : Martie 18, 2012, 19:40:08 »

wow! seriously, wow Shocked daca citeam postul asta acum cativa ani... Fighting
ce frumos era daca nu aflam majoritatea acestor greseli pe pielea mea
apropo de cerr, si eu il folosesc mereu, problema e sa nu il uitati in cod, deoarece sigur iei TLE
De asemenea, sa aveti grija la dimensiunea fisierului sursa, eu am depasit la OJI 2011
Si long long cred ca e cea mai frecventa greseala, cateodata nu e atat de evident ca trebuie folosit, cateodata pur si simplu scrii int din obisnuinta, desi gandesti long long... De exemplu, la problema swaps de la Algoritmiada 2012, runda 3, unde N era 1.000.000, dar in cod foloseam undeva N*N ce depaseste int.  Aha
Memorat
freak93
Echipa infoarena
Nu mai tace
*****

Karma: 342
Deconectat Deconectat

Mesaje: 819



Vezi Profilul
« Răspunde #18 : Martie 18, 2012, 21:49:04 »

Eroare ce mi s-a intamplat des. Nu uitati sa scoateti afisari in standard error (fprintf(stderr,  sau cerr << ). Desi aparent aveti tot aceeasi complexitate puteti sa luati foarte usor TLE. (100.000 de valori va costa pe putin cateva secunde)
Memorat
cosmyo
Strain


Karma: 1
Deconectat Deconectat

Mesaje: 14



Vezi Profilul
« Răspunde #19 : Martie 18, 2012, 22:06:21 »

Alta chestie care mi s-a intamplat la ONI ,am uitat sa pun  '\n' dupa ce am afisat tot ce era de afisat, prin urmare nu am luat niciun punct pe testele respective. 
Memorat
S7012MY
Nu mai tace
*****

Karma: 26
Deconectat Deconectat

Mesaje: 648



Vezi Profilul
« Răspunde #20 : Martie 18, 2012, 22:21:46 »

Se pare ca anul asta la a 9-a la campion trebuia sa afisezi cu '\n'
Inca un bug pe care l-am avut: trebuia sa calculez totul long long dar din obisnuinta functia mea primea ca si parametru un int.
Memorat
alex_ovidiunitu
Strain
*

Karma: 11
Deconectat Deconectat

Mesaje: 25



Vezi Profilul
« Răspunde #21 : Martie 18, 2012, 23:02:05 »

Chiar daca sunteti presati de timp nu dati copy/paste la unele secvente de cod care se repeta(for-uri, if-uri, apelari de funnctii) Read This!. De exemplu, mie mi s-a intamplat sa copiez cateva for-uri de vreo 3-4 ori intr-un program si am constat dupa un timp foarte lung de depanare ca al doilea for mergea pana la n in loc de m sau in alt caz sa scriu incorect (Ex: for (j=1;j<=m;i++) ) si astfel toata problema s-a dus de la un cap la altu' pe apa sambetei Mad.

Citat
array-uri de dimensiune de prea mica.
off by one errors. Datele pornesc de la 0 sau 1?
Aceste doua lucruri m-au costat anul trecut la OJI sad, deci fiti foarte atenti.

Oricum omul cat traieste invata Thumb up si este aproape imposibil sa nu dai peste vreun bug.
Memorat
Cosmin
Echipa infoarena
Nu mai tace
*****

Karma: 351
Deconectat Deconectat

Mesaje: 1.799



Vezi Profilul
« Răspunde #22 : Martie 19, 2012, 02:04:00 »

@Radu pare un bug frecvent asta la arbori de intervale. Cred ca tre sa dai cu capul o data ca sa il inveti Smile.
@Daniel buna lista.
@Alex good one, nu stiu cum am uitat de greseli de copy paste
Memorat
darkseeker
De-al casei
***

Karma: 29
Deconectat Deconectat

Mesaje: 106



Vezi Profilul
« Răspunde #23 : Martie 19, 2012, 11:59:46 »

Initiliazati minime/maxime cu valori suficient de mari/mici , aveti grija la prioritatea operatorilor mai ales cand folositi operatii pe biti (Exemplul ar fi arborii de intervale unde poate vreti sa alocati mai mult 1 + 2 ^ n , 1 + 1<<n e echivalent cu 2 ^ n + 1 nu cu 1 + 2 ^ n. Acesta e mai mult pentru incepatori dar am patit si eu la problema Nums unde aveam alocat un arbore de 2 ^ 23 in loc de  2^15 + 8  ) . De asemenea as mai aduce aminte ca modulo din c++ poate da si negativ asa ca aveti grija la recurente cu scaderi in care trebuie afisat modulo x rezultatul.
Memorat
costyv87
Strain
*

Karma: 8
Deconectat Deconectat

Mesaje: 37



Vezi Profilul
« Răspunde #24 : Martie 19, 2012, 11:59:52 »

4 bug-uri care mi-au ramas mie in minte :

- inversarea indicilor
- La finalul concursului nu deschideti cpp-ul cu notepad (sfatul meu) . Din simpla dorinta de a mai verifica o data , am deschis cu notepad si din instinct am dat un ctrl+s , insa nu am observat ca de fapt apasasem s + ctrl + s , si astfel am salvat sursa cu un s in plus. Asta a facut diferenta de la 80 la  0 puncte Smile).
- initiliaziarea
- La un ONI am rezolvat o problema . Aceasta presupunea generarea unui vector la final . Din inversarea conditiei din if , vectorul meu arata exact invers. Din pacate, testul din foaie era chiar palindrom si neavand timp , nu mi-am dat teste . Foarte curios a fost ca in testele oficiale s-au gasit 3 teste palindroame Smile))

Un ultim sfat : Cititi atent problema . Pe langa bug-urile de mai sus care mi s-au intamplat foarte rar, neatentia in timpul citirii enuntului m-a costat de multe ori foarte mult.
Memorat
Pagini: [1] 2   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines