Diferente pentru concursul-de-informatica intre reviziile #10 si #11

Nu exista diferente intre titluri.

Diferente intre continut:

Experienta demonstreaza ca, oricat de mare ar fi bagajul de cunostinte acumulat de un elev, mai e nevoie de ceva pentru a-i asigura succesul la olimpiada de informatica. Aceasta deoarece in timp de concurs lucrurile stau cu totul altfel decat in fata calculatorului de acasa sau de la scoala. Reusita depinde, desigur, in cea mai mare masura de puterea fiecaruia de a pune in practica ceea ce a invatat acasa. Numai ca in acest proces intervin o serie de factori care tin de temperament, de experienta individuala, de numarul de ore dormite in noaptea dinaintea concursului (care in taberele nationale este ingrijorator de mic) si asa mai departe.
Cu riscul de a cadea in demagogie, trebuie sa spunem ca un concurs de informatica presupune mult mai mult decat un simplu act de prezenta la locul desfasurarii ostilitatilor. Capitolul de fata incearca sa enunte cateva principii ale concursului, pe care autorul si le-a insusit in cei patru ani de liceu, atat  din experienta proprie, cat si invatand de la altii. Cititorul este liber sa respinga aceste sfaturi sau sa le accepte, filtrandu-le prin prisma personalitatii sale si alegand ceea ce i se potriveste.
Cu riscul de a cadea in demagogie, trebuie sa spunem ca un concurs de informatica presupune mult mai mult decat un simplu act de prezenta la locul desfasurarii ostilitatilor. Articolul de fata incearca sa enunte cateva principii ale concursului, pe care autorul si le-a insusit in cei patru ani de liceu, atat din experienta proprie, cat si invatand de la altii. Cititorul este liber sa respinga aceste sfaturi sau sa le accepte, filtrandu-le prin prisma personalitatii sale si alegand ceea ce i se potriveste.
h2(#inainte-de-concurs). Inainte de concurs
Primul si cel mai de seama lucru pe care trebuie sa il stiti este ca e important si sa participi, dar e si mai important sa participi onorabil, iar daca se poate sa si castigi. Nu trebuie sa porniti la drum cu ingamfare; modestia e buna, dar nu trebuie in nici un caz sa duca la neincredere in sine. Fiecare trebuie sa stie clar de ce e in stare si, mai presus de toate, sa se gandeasca ca la urma urmei nu dificultatea concursului conteaza, caci concursul, greu sau usor, este acelasi pentru toti. Mult mai importanta este valoarea individuala si nu in ultimul rand pregatirea psihologica.
Autorul a fost peste masura de surprins sa constate ca multi elevi merg la concurs fara ceas si fara hartie de scris. Aceasta este fara indoiala o greseala capitala. In timpul concursului trebuie tinuta o evidenta drastica a timpului scurs si a celui ramas. E drept ca in general supraveghetorii anunta din cand in cand timpul care a trecut, dar e bine sa nu va bazati pe nimeni si nimic altceva decat pe voi insiva. Unii colegi spuneau "Ei, ce nevoie am de ceas, oricum am ceasul calculatorului la indemana". Asa e, dar e extrem de incomod sa te opresti mereu la jumatatea unei idei, sa deschizi o sesiune DOS din cadrul limbajului de programare si sa afli cat e ceasul.
Autorul a fost peste masura de surprins sa constate ca multi elevi merg la concurs fara ceas si fara hartie de scris. Aceasta este fara indoiala o greseala capitala. In timpul concursului trebuie tinuta o evidenta drastica a timpului scurs si a celui ramas. E drept ca in general supraveghetorii anunta din cand in cand timpul care a trecut, dar e bine sa nu va bazati pe nimeni si nimic altceva decat pe voi insiva. Unii colegi spuneau "Ei, ce nevoie am de ceas? Oricum am ceasul calculatorului la indemana.". Asa e, dar e extrem de incomod sa te opresti mereu la jumatatea unei idei, sa deschizi o sesiune DOS din cadrul limbajului de programare si sa afli cat e ceasul.
In ceea ce priveste hartia de scris, ea este in mod sigur necesara. De fapt, o parte importanta a rezolvarii unei probleme este proiectarea matematica a algoritmului, lucru care nu se poate face decat cu creionul pe hartie. Pe langa aceasta, majoritatea problemelor opereaza cu vectori, matrice, arbori, grafuri etc., iar exemplele pe care este testat programul realizat trebuie neaparat verificate "de mana". E de preferat sa aveti hartie de matematica; este foarte folositoare pentru problemele de geometrie analitica, precum si pentru reprezentarea matricelor. Cantitatea depinde de imaginatia fiecaruia. In unele cazuri speciale, autorului i s-a intamplat sa umple 7-8 coli A4.
h2(#in-timpul-concursului). In timpul concursului
Din fericire pentru unii si din nefericire pentru altii, majoritatea examenelor iti cer sa dovedesti nu ca esti bine pregatit, ci ca esti mai bine pregatit decat altii. Aceasta inseamna ca si la olimpiada de informatica se aplica legea pestelui mai mare sau, cum i se mai spune, a concurentei. Valoarea absoluta a fiecaruia nu conteaza chiar in totalitate, ceea ce constituie sarea si piperul concursului. Intr-adevar, ce farmec ar avea sa mergi la un concurs la care se stie inca dinainte cine este cel mai bun ? Este destul de amuzant sa observi cum fiecare spera sa prinda "o zi buna", iar adversarii sai "o zi proasta".
Din fericire pentru unii si din nefericire pentru altii, majoritatea examenelor iti cer sa dovedesti nu ca esti bine pregatit, ci ca esti mai bine pregatit decat altii. Aceasta inseamna ca si la olimpiada de informatica se aplica legea pestelui mai mare sau, cum i se mai spune, a concurentei. Valoarea absoluta a fiecaruia nu conteaza chiar in totalitate, ceea ce constituie sarea si piperul concursului. Intr-adevar, ce farmec ar avea sa mergi la un concurs la care se stie inca dinainte cine este cel mai bun? Este destul de amuzant sa observi cum fiecare spera sa prinda "o zi buna", iar adversarii sai "o zi proasta".
Este usor sa fii printre cei mai buni atunci cand concursul este usor. Mai greu e sa fii cel mai bun atunci cand concursul este dur, pentru ca atunci intervine - inevitabil - dramul de noroc al fiecaruia. Niciodata insa nu se poate invoca greutatea concursului drept o scuza pentru un eventual esec. Concursul este la fel de greu pentru toti. Se poate intampla, mai ales daca probele dureaza mai multe zile (3-4) ca nici unul din concurenti sa nu acumuleze mai mult de 70-80% din punctajul maxim. Totusi, aceasta nu inseamna ca ei nu sunt bine pregatiti; mai mult, unul dintre ei trebuie sa fie primul. Asadar, niciodata nu trebuie adoptata o strategie de genul "problema asta e grea si n-am s-o pot rezolva perfect, asa ca nu ma mai apuc deloc de ea". Nu trebuie sa va impacientati daca vi se intampla sa nu aveti o idee geniala de rezolvare a unei probleme. Nu va cere nimeni sa faceti perfect o problema, ci numai sa prezentati o solutie care sa acumuleze cat mai multe puncte. Evident, prima varianta este intotdeauna preferabila, dar nu obligatorie.
Niciodata, chiar daca concursul este usor, nu e bine sa iesiti din sala de concurs inainte de expirarea timpului. Oricat ati fi de convinsi ca ati facut totul perfect, mai verificati-va; veti avea de furca cu remuscarile daca descoperiti dupa aceea ca ceva, totusi, nu a mers bine. Puteti face o multime de lucruri daca mai aveti timp (desi acest lucru se intampla rar). Iata o serie de metode de a exploata timpul:
* Verificati-va programul cu cat mai multe teste de mici dimensiuni. Sa presupunem ca programul vostru lucreaza cu vectori de maxim 10 000 de elemente. E o idee buna sa il rulati pentru vectori de unul sau doua elemente. Nu se stie cum pot sa apara erori.
 
* Treceti la polul opus si creati-va un test de dimensiune maxima, dar cu o structura particulara, pentru care este usor de calculat rezultatul si de mana. De exemplu, vectori de 10 000 elemente cu toate elementele egale, sau vectori de forma (1, 2, ..., 9 999, 10 000). Daca nu puteti sa editati un asemenea fisier de mana, copiind si multiplicand blocuri, puteti scrie un program care sa-l genereze.
 
* Daca inca v-a mai ramas timp, creati-va un program care sa genereze teste aleatoare. Spre exemplu, un program care sa citeasca un numar $N$ si sa creeze un fisier $INPUT.TXT$ in care sa scrie $N$ numere aleatoare. Intr-o prima faza, puteti folosi aceste teste pentru a verifica daca nu cumva la valori mai mari programul nu da eroare, nu se blocheaza (la alocarea unor zone mari de memorie) sau nu depaseste limita de timp, caz in care mai aveti de lucru.
 
* Verificati-va programul cu cat mai multe teste de mici dimensiuni. Sa presupunem ca programul vostru lucreaza cu vectori de maxim $10.000$ de elemente. E o idee buna sa il rulati pentru vectori de unul sau doua elemente. Nu se stie cum pot sa apara erori.
 
* Treceti la polul opus si creati-va un test de dimensiune maxima, dar cu o structura particulara, pentru care este usor de calculat rezultatul si de mana. De exemplu, vectori de $10.000$ elemente cu toate elementele egale, sau vectori de forma $(1, 2, ..., 9.999, 10.000)$. Daca nu puteti sa editati un asemenea fisier de mana, copiind si multiplicand blocuri, puteti scrie un program care sa-l genereze.
 
* Daca inca v-a mai ramas timp, creati-va un program care sa genereze teste aleatoare. Spre exemplu, un program care sa citeasca un numar $N$ si sa creeze un fisier $INPUT.TXT$ in care sa scrie $N$ numere aleatoare. Intr-o prima faza, puteti folosi aceste teste pentru a verifica daca nu cumva la valori mai mari programul da eroare, se blocheaza (la alocarea unor zone mari de memorie) sau depaseste limita de timp, caz in care mai aveti de lucru.
 
* Daca tot nu va da nimeni afara din sala, puteti scrie un alt program auxiliar care, primind fisierul $INPUT.TXT$ si fisierul $OUTPUT.TXT$ produs de programul vostru, verifica daca iesirea este corecta. Aceasta deoarece, de obicei, este mult mai usor de verificat o solutie decat de produs una (sau, cum spunea Murphy, "cunoasterea solutiei unei probleme poate ajuta in multe cazuri la rezolvarea ei"). Folosind "generatorul" de teste si "verificatorul", puteti testa programul mult mai bine. De altfel, la multe probleme chiar testele rulate de comisia de corectare sunt create tot aleator.
 
 
* In caz ca ati dat o solutie euristica la o problema NP-completa, puteti implementa si un backtracking ca sa vedeti cat de bune sunt rezultatele gasite euristic. Apoi, puteti incepe sa modificati functia euristica pentru a o face cat mai performanta.
h2(#strategii). Strategii de abordare a problemelor

Nu exista diferente intre securitate.

Topicul de forum nu a fost schimbat.