![]() | |
Regulament | Probleme | Clasament | Login | Forum | Contact |
Problema 1. Volum - Teste Modul de rezolvare al acestei probleme reprezinta o generalizare a determinarii suprafetei ocupate de o multime de dreptunghiuri in plan. Vom considera planele determinate de fetele de paralelipiped paralele cu planul XoY. Sortam aceste plane. Fie Z1 si Z2 doua plane consecutive din sirul sortat. Toate planele paralele cu XoY, aflate intre Z1 si Z2 vor determina in blocul de paralelipipede sectiuni identice. Astfel, va fi suficient sa determinam aria sectiunii si sa o inmultim cu distanta dintre planele Z1 si Z2. Suma valorilor obtinute pentru fiecare pereche de plane consective va fi exact volumul ocupat de cele N paralelipipede. Problema determinarii suprafetei ocupate de o multime de dreptunghiuri in plan este una clasica si nu vom insista asupra modului de rezolvare a acesteia. Complexitatea algoritmului este O(N3). Desi se poate obtine o complexitate de O(N2*log(N)) utilizand arbori de intervale, metoda prezentata, implementata "curat", este suficient de rapida pentru a obtine punctajul maxim.
Problema 2. Siruri omogene - Teste Datorita unei restrictii adaugate, am reusit sa transformam o problema simpla intr-una extrem de dificila, deocamdata nerezolvabila in conditiile impuse de enunt. Cea mai buna abordare a problemei, plecand de la premisele anterioare, a fost metoda backtracking, de altfel singurul punctaj maxim fiind obtinut astfel. Nu incurajam metode de rezolvare bazate pe declararea a mii de constante, la fiecare problema putandu-se obtine punctajul maxim fara a folosi astfel de tehnici. In acest sens, pentru evaluarea problemei am folosit date de test mult sub limitele specificate in enunt. Lucram in continuare la gasirea unei solutii pentru aceasta problema si, in cazul in care vom reusi, va vom face cunoscut algoritmul de rezolvare.
Problema 3. Coliniaritate - Teste Algoritmul de rezolvare al acestei probleme nu este foarte dificil dar, datorita dimensiunii mari a datelor de intrare, sunt necesare unele optimizari pentru ca timpul de executie al programului sa se incadreze in secunda acordata. Prezentam succint algoritmul standard de rezolvare a problemei: Complexitatea algoritmului este O(N2*log(N)), determinata de metoda de sortare. Unele optimizari care se pot face pentru reducerea timpului de executie
sunt prezentate mai jos: CMMDC=1 Optimizarile prezentate asigura incadrarea timpului de executie al programului in secunda acordata.
Problema 4. Agricultura - Teste Problema consta in determinarea submatricei cu numar maxim de elemente in care diferenta dintre valoarea maxima si valoarea minima este mai mica decat K. Ideea generala din spatele celor mai multe din metodele de rezolvare consta in stabilirea a doua coloane (sau linii) intre care se va face cautarea. Avand fixate coloanele C1 si C2, se vor obtine toate solutiile valide pentru care prima coloana a submatricei este C1 iar ultima C2. Pentru fiecare linie avem nevoie de minimul si maximul de pe linia respectiva, luand in considerare doar elementele de pe pozitiile din intervalul [C1, C2]. Aceste valori se pot obtine rapid, la incrementarea valorii lui C2. Stabilim linia L1 si pentru aceasta linie vom determina linia L2 care determina marginea inferioara a submatricei. Pentru linia L1+1 marginea inferioara va fi cel putin egala cu L2, deci aceasta valoarea nu va scadea. Prin urmare, parcurgerea se face in O(N). Singura problema este determinarea, la cresterea lui L1, a minimului si maximului intre liniile L1 si L2. Folosind heap-uri, complexitatea determinarii submatricei maximale determinata de coloanele C1 si C2 este O(N*log(N)). Asadar, complexitatea generala va fi O(N3*log(N)). Cu mici optimizari la implementare, programul se va incadra fara probleme in secunda acordata. Unii concurenti au obtinut algoritmi de complexitate O(N3), folosind in loc de heap-uri o structura de date numita "deque".
Problema 5. Orientarea muchiilor - Teste Rezolvarea consta in determinarea muchiilor "critice", singurele care nu pot fi orientate. O muchie este critica daca prin eliminarea sa graful isi pierde conexitatea. Eliminarea muchiei ar imparti varfurile grafului in doua multimi A si B. In graful initial, toate drumurile de la varfurile din multimea A la varfurile din multimea B (si reciproc) trec prin aceasta muchie. Orientarea acestei muchii ar limita existenta drumurilor numai spre una din aceste multimi. Identificarea muchiilor critice se poate face printr-o parcurgere DF a grafului. Ideea ce sta la baza metodei este ca muchiile critice se afla in arborii caracteristici cautarilor DF si BF. Complexitatea cautarii in adancime, in cazul acestei probleme, este O(N2), deci fara probleme privind timpul de executie, putandu-se obtine punctaj maxim si cu algoritmi de clasa O(N3).
|
Algoritmus este sponsorizat de Emuadmin. Copyright © 2004 Emuadmin SRL. Toate drepturile rezervate. Termeni de Utilizare. |
Ultima actualizare: 27/Nov/2004 |