Afişează mesaje
|
Pagini: 1 ... 3 4 [5] 6 7 ... 69
|
113
|
Comunitate - feedback, proiecte si distractie / Off topic / Răspuns: Top #10 probleme din arhivă
|
: Mai 30, 2012, 05:56:00
|
Imi place mult ideea acestui top, te ajuta sa gasesti probleme interesante din arhiva fara prea mult efort. De aceea voi mentiona si eu 10 probleme care mi se par tari (nu neaparat cele mai tari) si pe care nu cred ca le-a mentionat cineva pana acum: - Telegraf - smechera problema, n-am avut nici o idee cum s-o abordez initial
- Dreptunghiuri - rupere cu cunostinte de clasa a 9-a
- Cerc - interesant ca se reduce la o problema de grafuri si la teorie nu prea des intalnita in probleme
- Obiective - grafuri, arbori, algoritmi, structuri de date, tot ce vrea sufletul
- Ndap - o dinamica 3^n misto
- Copaci3 - relativ simpla rezolvarea, greu/interesant de demonstrat de ce e corecta
- NKPerm - o abordare neobisnuita pentru problemele cu stari
- Trenuri - subiectiv: pentru ca am venit o rezolvare misto la problema lui Alex, motiv pentru care a ajuns sa fie o problema tare de lot
- Posta - imi place genul asta de probleme (greedy + structuri de date) avand input destul de minimal
- Gard4 - interesant modul de utilizare al configuratiilor, desi problema nu e atat de dificila
Dintre problemele care au mai fost mentionate imi plac foarte mult Cabane si Reg.
|
|
|
114
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva educationala / Răspuns: 005 Potrivirea sirurilor
|
: Mai 20, 2012, 09:21:53
|
Pentru ca daca ai folosi acelasi modulo, nu ai miscora deloc probabilitatea unei coliziuni.
Daca intrebi de ce se folosesc uneori doua sau mai multe hash-uri, raspunsul e urmatorul: daca functia ta hash genereaza numere uniform in intervalul [0, M1), atunci ai probabilitate 1/M1 pentru o coliziune. Daca mai adaugi o alta functie hash independenta de prima care returneaza numere uniform in intervalul [0, M2), atunci probabilitatea unei coliziuni scade la 1/M1 * 1/M2. Poti sa vezi tehnica asta ca si cum ai creste intervalul in care returneaza functia hash valorile la [0, M1*M2), dar in acelasi timp eviti calculul pe numere mari.
|
|
|
117
|
Comunitate - feedback, proiecte si distractie / Blog / Răspuns: Atitudinea potrivita
|
: Mai 07, 2012, 11:17:37
|
Sunt foarte de acord cu ideile prezentate in acest post.
In plus, la intrebarea: "Pot fi astfel de experienţe, dacă nu evitate, măcar minimizate?", cred ca un alt raspuns foarte bun este "Prin exercitiu." (Atentie, aici ma refer la eveniment in sine si nu la antrenarea calitatilor oricum necesare pentru eveniment.) Voi doua doua exemple mai jos pentru a ma face inteles:
1. Un antrenament util pentru un interviu de job este chiar sa dati mai multe astfel de interviuri in prealabil. De ce? In primul rand, exista o serie de intrebari clasice si nu neaparat comode (mai ales pentru cei mai putini vorbareti, cum sunt programatorii in general), de exemplu: "De ce vrei sa te angajezi la aceasta companie?", "Ce ai schimba la un produs oferit de companie?", "Care este cel mai interesant proiect la care ai lucrat vreodata?", etc. Vei ajunge sa oferi raspunsuri mult mai bune si mai complete odata ce esti pus de cateva ori in ipostaza de a raspunde la ele. Imi amintesc, de exemplu, ca la primul meu interviu pentru Google am fost intrebat de proiectele la care am lucrat la facultate. Mi-era cam jena sa povestesc ce facusem mai ales ca erau lucruri nu foarte complicate (acum, gandidu-ma mai bine, nu cred ca intervievatorul se astepta neaparat la ceva complicat) si am insistat ca nu am facut nimic deosebit, in loc sa povestesc despre oricare proiect si cred ca acest lucru m-a costat. Intre timp, am devenit atat de obisnuit cu aceasta intrebare incat, daca nu m-as controla in mod special, probabil as reusi sa plictisesc intervievatorul sau sa nu-mi las suficient timp pentru intrebarile de coding. In al doilea rand, veti ajunge sa tratati cu mai multa usurinta situatiile neprevazute. De exemplu, cunosc cazul unei persoane care la primul interviu a spus ca limbajul preferat e C++ pentru ca vroia ca la intrebarile de coding sa lucreze in C++ dupa ce se antrenase pe infoarena, topcoder, etc. Apoi intervievatorul l-a intrebat de un proiect mai deosebit pe care l-a facut in C++ si asta l-a blocat, in loc sa povesteasca despre alte proiecte super cool pe care le-a facut si sa spuna ca foloseste C++ in special pentru "short coding challenges".
2. La concursurile de programare, elevii mai putin experimentati tind sa evolueze mai slab, chiar daca dovedesc o inteligenta comparabila sau chiar superioara primilor clasati. Cauzele sunt o multime: emotii, bug-uri frecvente pe care le intalnesc prima oara, lipsa unei strategii generale de abordare a unui concurs, etc. De exemplu, acum vreo 2-3 ani predam la ICHB celor care acum sunt primii in lot si trebuia sa explic adesea profesorilor ca rezultatele mai slabe la anumite concursuri nu se datorau lipsei pregatirii elevilor, ci a lipsei experientei de concurs care nu poate fi castigata peste noapte. O dovada suplimentara e faptul ca atunci stapaneau deja cam 80%-90% din cunostintele teoretice pe care le detin acum.
In concluzie, prin exercitiu poti imbunatati considerabil peformanta medie la o proba sau la orice eveniment dintr-o categorie asemanatoare.
|
|
|
119
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 105 Base3
|
: Aprilie 30, 2012, 19:37:29
|
Ideea e sa incerci sa calculezi len[ i ] = lungimea minima a unui sir care are un 1 in centru si diferenta dintre lungimea partii sirului la dreapta de 1 si lungimea partii sirului la stanga de 1 egala cu i (i poate fi si negativ, dar nu e o problema mare). Adaugarea de siruri noi la stanga si la dreapta te duce in stari noi. Daca vezi starile len ca noduri ale unui graf, atunci prin adaugarea unui sir la stanga/dreapta se formeaza muchii cu cost. Si de aici ideea de Dijkstra.
|
|
|
|