Afişează mesaje
|
Pagini: 1 ... 4 5 [6] 7 8 ... 47
|
127
|
infoarena - concursuri, probleme, evaluator, articole / F11 Competition 2011 / Propuneri de la participanți
|
: Martie 22, 2011, 11:05:19
|
Eu nu va inteleg, sincer. Majoritatea dintre voi stiti foarte bine ca streamurile sunt mai incete decat functiile standard si totusi continuati sa le folositi in concursuri ca sa veniti dupa aia sa va plangeti ca nu ati luat 200.
@fm_strategy: Operatia modulo este o operatie foarte inceata, deci rezolvarea ta la prima problema nu este mai eficienta, ba chiar este mult mai ineficienta.
|
|
|
130
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 001 CMMDC
|
: Martie 15, 2011, 19:10:32
|
In primul rand nu inteleg de ce ai nevoie de 3 numere cand tu vrei sa calculezi cmmdc-ul a 2 numere :-" (deci ai o greseala in gandire aici). In al doilea rand algoritmul e foarte ineficient. Daca incerci sa calculezi cmmdc-ul a nr destul de mari algoritmul tau va face foarte multe operatii si va dura foarte mult. Nu folosim algoritmi complicati doar ca se ne aflam in treaba sau ca sa ne dam noi mari, ci pentru ca sunt mai rapizi.
|
|
|
132
|
infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: it->first, it->second
|
: Martie 07, 2011, 19:22:34
|
[offtopic] Debuggerul nu e neaparat mai productiv.
Observ din ce in ce mai mult o tendinta a elevilor in romania de a nu mai pune mare importanta pe implementare. Am vazut elevi care doar citeau problema, scoteau solutia si nu o mai implementau. Sau cand implementau stateau cu mii de variabile in watch. Si dupa olimpiada va plangeti toti si faceti clasamente cu cat ati fi avut daca nu ati fi busit implementarea. Sau elevi care ziceau ca "am luat 100 dar daca nu busheam luam 250 si intram in lot". Hai sa va zic o chestie. Busheala face parte din skill, un skill care se creaza implementand multe probleme si obisnuindu-va sa scrieti problema curat din prima. De acea e mai ok sa folosesti printf-uri in loc de debugger. O sa va obisnuiti sa va ganditi codul in timp ce il scrieti, sa nu mai scrieti chestii de aiurea in cod avand in cap ca "daca e gresit o sa il vad cu debuggeru". Inteleg sa il folositi in concurs, cand chiar conteaza sa iti gasesti repede greseala, insa cand esti acasa si nu te preseaza nimeni va recomand sa folositi printf. E un fel de a antrena cu o mana la spate. [/offtopic]
|
|
|
135
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 1102 Turnuri2
|
: Februarie 25, 2011, 13:53:11
|
Nu e din cauza ca numarul de intoarceri e prea mic. E din cauza ca fiecare numar va fi procesat o singura data. Algoritmul e echivalent cu urmatorul algoritm. Trec prin fiecare element in parte si il adaug intr-o stiva. Vreau sa mentin acea stiva sortata descrescator, astfel ca daca elementul din varful stivei e mai mic decat elementul pe care vreau sa il bag acuma incep sa scot din stiva pana cand in varful stivei ramane un element mai mare. In acest moment elementul din varful stivei este de altfel si primul element din stanga mai mare decat el (pentru dreapta faci la fel). De ce e acest lucru O(N). Simplu, pentru ca fiecare element intra in stiva o singura, si iese o singura data. E drept ca poate parea mai mult din cauza ca la fiecare pas trebuie sa mai si scoti niste elemente din stiva, insa gandestete ca suma numarului de elemente pe care le scoti e N.
|
|
|
136
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 1102 Turnuri2
|
: Februarie 24, 2011, 20:04:10
|
@Vlad Tarniceanu: Ba da. Am spus si mai sus, complexitatea optima este O(N).
Hint: Ca sa calculati primul turn din stanga/dreapta strict mai inalt folositi o stiva (e un algoritm destul de clasic). Acum ca sa determinati maximul pe intervalul vizibil din turnul incercati sa va folositi de elementele pe care turnul i le-a scos din stiva.
|
|
|
144
|
infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: Cati pasi poate face mingw 2,05?
|
: Februarie 20, 2011, 13:09:58
|
@George Popoiu: 150 de milioane de instructiune e mult pentru o secunda. Nu poti sa verifici cu un simplu for de genul acela timpul de rulare pentru un anumit numar de pasi deoarece c++ mai optimizeaza si el. De ex: a = 0; for (int i = 1; i <= 1000000000; i++) a++;
Va merge destul de repede iar a va avea valoarea 1 000 000 000 deoarece c-ul si-a dat seama ca acea instructiune e echivalenta cu a += 1000000000. In general eu foloseam ca golden rule 30-40 de milioane pentru 1 secunda, 1-2 milioane pentru 0.1 secunde.
|
|
|
146
|
Comunitate - feedback, proiecte si distractie / Off topic / Răspuns: Widget infoarena
|
: Februarie 13, 2011, 01:40:14
|
Nu stiu exact ce ar merge imbunatatit la design, doar ca e am dureros asa la ochi galbenu ala pe verde. Nu poti sa iti pui pe pagina de profil ca sunt dezactivate tagurile de html din textile. Ca sa poti sa faci ar trebui sa faci un macro (in codu infoarena) pentru asta, ceea ce nu e chiar asa greu, dar tre sa fii putin mai implicat. Daca vei poti intra pe hackers.devnet.ro/wiki si e acolo un tutorial despre cum sa downloadezi codul infoarena. Daca ai ceva nelamuriri poti sa imi trimiti un pm si o sa incerc sa te ajut in masura in care pot. Banui ca din moment ce ai reusit sa faci widgetu asta ai cunostinte cel putin elementare de web development.
|
|
|
149
|
infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: [Sfaturi] Submatricea de arie maximala
|
: Ianuarie 13, 2011, 22:56:32
|
Ideea e ca pentru fiecare numarul din vectorul vrei sa afli primul numar din stanga si din dreapta lui care sunt mai mici de cat el (practic vrei sa construiesti un dreptunghi cu inaltimea egala cu elementul de pe pozitia si vrei sa vezi cat de mult il extinzi). Acuma pentru a afla pentru fiecare numar primul element din stanga mai mic el, bagi pe rand elementele intr-o stiva sortata crescator. Ideea e ca atunci cand adaugi un element in stiva, scoti din varful stivei elementele mai mari decat el. Dupa ce ai scos toate acele elemente, elementul din varful stivei e fix primul numar din stanga lui mai mic decat el. Faci fix la fel ca sa gasesti primul element din dreapta mai mic decat el.
|
|
|
150
|
infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: Utilizare inline
|
: Ianuarie 10, 2011, 15:17:55
|
Zice bine Cezar. El se referea la faptul ca in cazul functiilor recursive nu are nici un efect. Inline poti in principiu sa il pui la orice tip de functie doar ca nu intotdeauna va avea si efect. Prin inline compilatorul va incerca sa copieze codul functiei acolo unde e apelata, eliminand astfel overheadul creat de apelul functiei (overheadul asta e mic insa daca apelezi de 1 milion de ori functia maxim(a, b) o sa conteze). Problema e ca in cazul anumitor functii (din pacate nu stiu exact conditiile) compilatorul va ignora acel inline pentru ca nu poate copia codul acolo (cum e cazul functiilor recursive). Pare destul de bine explicat aici care e smenu cu functiile astea http://www.parashift.com/c++-faq-lite/inline-functions.html#faq-9.3 (nu am gasit insa si conditiile ca acel inline sa aibe efect).
|
|
|
|