Afişează mesaje
|
Pagini: 1 2 [3] 4
|
51
|
infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: 009 Algoritmul lui Dijkstra
|
: Aprilie 20, 2008, 00:53:36
|
Depinde de problema: daca ai sursa unica, poti folosi Dijkstra (cu heap-uri) sau Bellman-Ford (cu coada). Eu il prefer, in general, pe al doilea, pentru simplitate, cu toate ca primul se comporta, teoretic, mai bine. Daca te intereseaza drumuri minime intre toate perechile de varfuri, folosesti Floyd-Warshall (sau Roy-Floyd, cum mai este numit). Problema drumurilor minime este foarte bine tratata in CLR, o carte de care vei avea nevoie, daca te hotarasti sa incepi studiul serios Iti sugerez, totusi, sa te documentezi putin mai mult inainte de a pune o astfel de intrebare pe forum, sunt pe internet suficiente surse de informare, in care vei gasi pe larg explicatii asupra algoritmului, poate mai complete sau mai usor de inteles decat iti va putea da cineva aici (eforturile lui Bogdan sunt cu adevarat de apreciat un + de la mine). Abia dupa ce te vei convinge singur "cu ce se mananca" e indicat sa ceri sfaturi legate de anumite particularitati sau aplicatii.
|
|
|
52
|
infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: exemplu + oni
|
: Aprilie 20, 2008, 00:40:25
|
In general, poti testa sursele pe site - daca iti compileaza aici, vor compila cu siguranta si la ONI. Spre exemplu, arborii de intervale ii poti testa in arhiva educationala, aiciExemplul tau, de exemplu, compileaza cu warning-uri referitoare la fisierele header, care sunt considerate "deprecated". Foloseste in schimb
|
|
|
53
|
infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: Automate finite
|
: Aprilie 20, 2008, 00:26:03
|
Un automat finit poate fi folosit si pentru string matching. Odata construit automatul pentru un anumit pattern, toate aparitiile acestui pattern intr-un sir pot fi gasite in timp proportional cu lungimea sirului - complexitate O(N).
Nu stiu exact cum este implementat intern strcmp, insa banuiesc ca nu are la baza un algoritm liniar, prin urmare pentru siruri si patternuri de lungimi mari nu se va comporta la fel de bine ca un algoritm performant de potrivire, cum ar fi KMP (Knuth-Morris-Pratt), Rabin-Karp sau Boyer-Moore.
|
|
|
54
|
infoarena - concursuri, probleme, evaluator, articole / Informatica / Automate finite
|
: Aprilie 18, 2008, 21:12:24
|
Termenul se refera la automate finite (finite automata). Pentru detalii vezi articolul lui Adrian Vladu de aici si prezentarea introductiva de aici. Cat despre algoritmii de simplificare sau echivalenta, poti gasi cateva paper-uri pe net, insa cred ca sunt destul de avansati pentru inceputuri. Sunt multe altele de invatat pana la automate finite
|
|
|
55
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 170 Subsir 2
|
: Aprilie 18, 2008, 20:01:53
|
Aha , am inteles, multumesc, dar cum ramane cu cel mai scurt subsir crescator maximal , asta ce inseamna?
Pe scurt, un subsir crescator este maximal daca nu mai poate fi extins. Trebuie sa determini cel mai scurt astfel de subsir. Un exemplu concludent este cel dat de Marius acum cateva posturi: subsir2.in 12 19 17 -14 17 -6 21 19 8 -17 19 15 -22
subsir2.out 1 12 Aici, subsirul format de al doisprezecelea element (-22) este maximal (nu mai poate fi extins) si este cel mai scurt. In alta ordine de idei, cred ca ar trebui modificati doi indici in restrictiile problemei, mai exact acolo unde apare B=(bi1,bi2...b iN) modificat in B=(bi1,bi2...b iK)
|
|
|
56
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 496 Rj
|
: Aprilie 18, 2008, 13:50:54
|
Fii atent cand faci update la matrice: la un anumit pas, poti updata si elemente care au valoarea mai mare decat zero, daca distanta gasita pana atunci este mai mare decat pas+1. Pentru a rezolva asta, trebuie sa mai adaugi o conditie in if: if (a[i-1][j]==0 && (r[i-1][j]==0 || r[i-1][j]>pas+1) && i-1<=n && i-1>=1) Sau poti initializa toate elementele cu o valoare foarte mare si apoi modifica if-urile astfel: if (a[i-1][j]==0 && r[i-1][j]>pas+1 && i-1<=n && i-1>=1)
|
|
|
58
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 488 Strigat
|
: Aprilie 14, 2008, 16:21:38
|
Citisem solutia oficiala si articolul despre automate finite. Am inteles cum se poate construi un automat finit care accepta un cuvant, dar, din cate inteleg din solutie, trebuie construit un automat care accepta mai multe cuvinte, iar starilor de acceptare le voi asocia apoi valorile "strigatului" (nu pot construi un automat avand ca stari cele 100 * 1000 valori posibile pentru strigat...). Dupa asta, dinamica e evidenta. Insa, asa cum am spus, ramane de construit automatul pentru cele M cuvinte. LE: Cred ca m-am prins cum se face: pot lua ca stari toate prefixele cuvintelor, prefixele comune aparand o singura data. Astfel am maxim LTot stari, unde LTot este lungimea totala a cuvintelor. Constructia automatului se poate face astfel in O( LTot*|sigma| ) LE2: ...sau nu
|
|
|
60
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 514 Capitala
|
: Aprilie 09, 2008, 15:41:43
|
La ce te referi cand spui ca poti calcula suma distantelor pana la nodurile care nu sunt in subarbore "on the fly"? Eu am rezolvat problema cu doua parcurgeri DF, una ca sa determin suma distantelor pana la nodurile din subarbore, iar a doua pentru a determina (pe baza informatiilor de la primul DF) cealalta suma; problema e ca imi iese din timp pe un test. Se poate face cu o singura parcurgere a arborelui?
|
|
|
61
|
Comunitate - feedback, proiecte si distractie / Scrie articole / Răspuns: Siruri de sufixe
|
: Aprilie 07, 2008, 22:02:48
|
Am o intrebare: cum poate fi folosit template-ul "scrie-articole" pentru a adauga mai multi utilizatori? Ma refer la == include(page="template/implica-te/scrie-articole" user_id="nume_user") == Si aici, cum banuiesc ca a fost sau va fi situatia mai multor articole, contributii importante de redactare sau continut au venit din partea mai multor persoane. In particular, este cazul lui Marius, care a ajutat mult la cea de-a doua parte, si merita din plin mentionat Daca nu poate fi folosit astfel, atunci poate il putem modifica (nu cred ca e atat de dificil - eu nu stiu totusi de unde se pot edita template-urile) pentru "multi-user support"
|
|
|
67
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 014 Secventa
|
: 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).
|
|
|
68
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: Raspuns: 030 Secventa 3
|
: Aprilie 04, 2007, 23:16:59
|
Si eu am facut-o in O(n) si am luat 100 din prima deci sigur e greseala de implementare la rmikeweb...nu stiu daca merge pe toate testele insa am facut-o exact ca pe Secventa2 +verficarea cu limita superioara mutand startul cu unu daca nr de el din secventa este mai mare decat maximul de el din care poate fi alc secventa recalculand valoarea cu startul mutat(in O(1) calculez suma de la x la y deci am preprocesat),chestie care nu trebuia facuta la Secventa2(unde se verifica doar limita inferioara).Ori sunt testele prost alese ori e chiar buna solutia...insa eu mizez pe a doua optiune!!! Eu mizez pe prima Din cate am inteles, tu nu iei in vedere decat secventele de lungime exact U...
|
|
|
73
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 036 Cutii
|
: Martie 24, 2007, 00:00:39
|
Acum imi dau seama ca nu (cred ca) se poate aplica algoritmul in n log n pentru cel mai lung subsir crescator la problem asta, deoarece nu exista relatie de ordine totala pe multimea punctelor din plan (o astfel de relatie ar fi echivalenta cu o relatie de ordine pe multimea numerelor complexe...). Asadar, nu se poate face cautarea binara din algoritmul in n log n... curaj cu AIB
|
|
|
|