Sunteți pe pagina 1din 5

Proiectarea Algoritmilor 2013

Tema 1

Proiectarea Algoritmilor - Tema 1


Dat a publicare: 2 martie 2013 Deadline: 20 martie 2013 - 23:55 Claudia C ardei Andrei P arvu S , tefan Rus , et ,i

6.03.2013 - Schimbare form a Makele s augare limite de , i ad timp.

Proiectarea Algoritmilor 2013

Tema 1

Introducere

Ajuns n anul doi la facultate, student as ,i , ii de la Automatic , i Calculatoare au nv at a concepte noi s , at dou , i interesante: strategia greedy s , i programarea dinamic a. Dup a ce s arere despre cele dou a, le-a fost cerut s a , i-au format o p rezolve dou a probleme pentru ca noile cunos a nu r am an a nefolosite (s , tint , e s ,i implicit s a se uite).

Prima problem a - Eliminare gard - 40 de puncte

Ion s a vreme, dar n ultimul timp relat , i Vasile sunt vecini de mult , iile dintre ei s-au deteriorat. Casele celor 2 sunt separate printr-un gard de lungime L format din N st alpi (numerotarea se face de la st anga de dreapta, de la st alpul 1 p ana la st alpul N ). Despre ecare st alp i se cunoaste Dist[i] ca ind distant , a de la st alpul curent p ana la st alpul 1 - astfel D[1] = 0 s , i D [N ] = L, iar distant ,a dintre st alpul i si st alpul i + 1 este D[i + 1] D[i]. Ion dores a strice acest gard (pentru a l supara pe Vasile) s a , te s , i dores , te s elimine cel mult M st alpi din acesta (dac a ar elimina mai mult i Vasile ar deveni , suspicios). Totus a fac a o pagub a c at mai mare s a , i, Ion dores , te s , i vrea ca dup eliminarea st alpilor distant a minima dintre oricare doi st a lpi consecutivi r a mas , ,i s a e maxim a. Cu alte cuvinte, daca n urma elimin arii r am an N st alpi (N N M ) se dores min (D[i + 1] D[i]) s a e c at mai mare. Atent , te ca , ie!
i=1,N 1

Ion nu are voie s a elimine st alpul 1 sau st alpul N . 9 De asemenea, Ion cunoas a M + 2 N 100.000 s , te c , i L 10 . Exemplu: S a presupunem ca avem N = 5, M = 1, L = 10 s , i distant , ele Dist = {0, 3, 7, 8, 10}. Solut a ar s a se elimine st alpul 4 aat la distant a , ia optim , 8, obt andu-se o distant a minim a egal a cu 3 - mai mult de at at nu se poate. , in , Fis a problema va cont , ierul de intrare pentru aceast , ine pe prima linie trei numere naturale separate printr-un spat and restrict , iu, N , M s , i L, respect , iile de mai sus. Pe urm atoarele N linii va dat vectorul Dist, pe ce-a de-a i-a linie a andu-se elementul Dist[i]. Pentru exemplul de mai sus s , ierul de intrare ar : 5 1 10 0 3 7 8 10 Fis a calculata. Pe , ierul de ies , ire va cont , ine pe prima linie distant , a maxim a doua linie va num arul N de st alpi r amas i dup a eliminarea a cel mult M , st alpi. Urm atoarele N linii vor cont ine distant ele st a lpilor r a mas , , , i, pe cea de-a i-a linie a andu-se distant a st a lpului i fat a de st a lpul 1. , , Fis , ierul de ies , ire pentru exemplul de mai sus ar : 3 4 0 3 2

Proiectarea Algoritmilor 2013

Tema 1

7 10

A doua problem a - Planicare taskuri - 40 de puncte

Lucr and ntr-o fabric a, ziua de munc a a lui Georgic a este mp art a n N sloturi , it de timp, numerotate de la 1 la N (N 1000). Pentru ecare slot de timp Georgic a poate decide dac a s a munceasc a n acel slot sau s a ia o pauz a de relaxare. Fiecare slot i are asociat un c as a l poate obt , tig C [i] pe care Georgic , ine dac a ar munci atunci (104 C [i] 104 ); acest c as a n felul urm ator: , tig se d dac a Georgic a se decide s a lucreze ntr-un interval [i, j ] atunci c as l , tigul pe care obt , ine este Castig [i, j ] = C [i +1]+ C [i +2]+ ... + C [j ] - cu alte cuvinte primul slot nu intr a n calcul, deoarece Georgic a l consuma nc alzindu-se pentru munc a. Intr-o zi normal a de munc a, Georgic a trebuie s a lucreze n exact T sloturi de timp (T 1000) - el s andu-s , i poate planica munca cum dores , te aleg , i un subset de T sloturi din cele N disponibile. Totus i, Georgic a dores te s a obt a un , , , in prot c at mai mare, iar datoria voastr a este s a l ajutat i s i s a i-l calculat i. Ast, , , fel, trebuie s a aleget i un set de intervale disjuncte [ a , b ] , [ a , b ] , ... [ a , b , 1 1 2 2 k k ] cu
k

1 a1 b1 < a2 b2 < ... < ak bk N s ,i


k

(bi ai + 1) = T astfel nc at
i=1

Castig [ai , bi ] s a e maxim a.


i=1

Exemplu: S a presupunem c a avem N = 5, T = 4 si c as , tigurile {3, 9, 1, 1, 7}. Solut ia optim a ar s a select a m intervalele [1 , 2] s i [4 , 5] cu un c as , , , tig total de 9 + 7 = 16. Fis a problema va cont a nu, ierul de intrare pentru aceast , ine pe prima linie dou mere naturale N s i T respect a nd restrict iile de mai sus. Urm a toarele N linii , , cont in c a te un num a r ntreg ecare, al i -lea num a r reprezent a nd c a s tigul pentru , , slotul i. Pentru exemplul de mai sus s , ierul de intrare ar : 54 3 9 1 1 7 Fis as l poate obt , ierul de ies , ire cont , ine pe prima linie c , tigul maxim pe care , ine Georgic a. Linia a dou va cont arul de intervale selectate. Urm atoarele , ine K , num K linii vor cont n care , ine ecare un interval [ai , bi ] (ai bi ) de sloturi de timp Georgic a va trebui s a lucreze astfel nc at s a obt a c as , in , tigul ment , ionat mai sus. Pentru exemplul de mai sus s , ierul de ies , ire ar : 16 2

Proiectarea Algoritmilor 2013

Tema 1

12 45

Bonus - 20 de puncte

Problema de bonus reprezint a o generalizare a problemei 2. Cerint am ane , a r acees a vine din faptul c a se permite ca s , i - singura diferent , , irul de sloturi sa e circular. Cu alte cuvinte putem alege s , i un interval de forma [ai , bi ] cu 1 bi < ai N , nsemn and c a vom alege elementele ai ai + 1 ... N 1 ... bi cu c as n acest caz , tigul C [ai + 1] + ... + C [N ] + C [1] + ... + C [bi ]. Atent ,i , ie! S toate intervalele trebuie s a e disjuncte, deci un slot i NU poate ocupat de mai mult de un interval. Pentru exemplul de la problema 2, dac a permitem alegerea unui s , ir circular atunci optim va s a alegem intervalul [4, 2] cu c as , tig total 7 + 3 + 9 = 19. Formatul s , ierului de intrare este identic cu cel de la problema doi. Formatul s a , ierului de ies , ire este identic cu cel de la problema 2, cu singura ment , iune c putem avea un interval de forma [ai , bi ] cu ai > bi , caz care semnic a alegerea unui interval circular. Pentru inputul de mai sus, s , ierul de ies , ire ar : 19 1 42

Punctare

Punctajul pentru primele dou a probleme este de 40 de puncte ecare, iar bonusul valoreaz a 20 de puncte. 10 puncte vor acordate pentru coding-style, 10 puncte pentru comentarii s a v a uitat , i README. Pentru detalii putet , i s ,i s , i peste regulile generale de trimitere a temelor. Vor exista n total 20 de teste de 5 puncte ecare, 8 teste pentru prima problem a, 8 teste pentru cea de-a doua s , i 4 teste pentru bonus. Din cele 5 puncte ale unui test, 3 puncte se vor acorda pentru aarea valorii corecte (prima linie din s , ierul de ies , ire) s , i 2 puncte pentru reconstituirea solut , iei - punctele pentru reconstituirea solut iei sunt condit ionate de aarea valorii corecte. , , Punctele pe teste sunt independente, punctajul pe un anumit test neind condit , ionat de alte teste. Fiecare problem a va avea o limit a de timp pe test (precizat a mai jos) - dac a execut ia programului pe un test al acelei probleme va dura mai mult dec a t , limita de timp vet i primi automtat 0 puncte pe testul respectiv s i execut ia va , , , ntrerupt a. In s a descriet , ierul README va trebui s , i solut , ia pe care at , i ales-o pentru ecare problem a, s a precizat , i complexitatea pentru ecare s , i alte lucruri pe care le considerat , i util de ment , ionat. Corectorii s a dreptul de a sc adea puncte dac a vor considera acest lucru , i rezerv

Proiectarea Algoritmilor 2013

Tema 1

necesar.

Format arhiva s , i testare

Temele pot testate automat pe vmchecker - acesta suport a temele rezolvate in C/C++ s a dorit a realizat n alt limbaj trebuie s a trimitet , i Java. Dac , i s , i tema ,i un e-mail lui Traian Rebedea (traian.rebedea@cs.pub.ro) n care s a i ceret ,i explicit acest lucru. Arhiva cu rezolvarea temei trebuie sa e .zip s a cont a: , i s , in Fis a , ierul/s , ierele surs Fis , ierul Makele Fis , ierul README Fis a cont a , ierul pentru make trebuie denumit obligatoriu Makele s , i trebuie s , in urm atoarele reguli: build, care va compila sursele s , i va obt , ine executabilele. run-p1, care va rula executabilul pentru problema 1 run-p2, care va rula executabilul pentru problema 2 run-pb, care va rula executabilul pentru problema bonus clean, care va s , terge executabilele generate. Atentie! Numele regulilor trebuie s a e exact cele de mai sus, n special pentru cele de run. Absent a a acestora va avea drept consecint a , a sau denumirea diferit , obt , inerea a 0 puncte pe testele echivalente problemei rezolvate de regula respectiv a. Atent a compilarea cu , ie Pentru cei ce folosesc C/C++ NU este permis opt , iuni de optimizare a codului (O1, O2, etc.). Atent a, s , ierul de intrare se va numi date.in, iar cel , ie Pentru ecare problem de ies , ire date.out. Limitele de timp pentru problema 1 sunt: C/C++ 0.5 secunde Java 1.5 secunde Limitele de timp pentru problema 2 si problema bonus sunt: C/C++ 0.5 secunde Java 1.5 secunde

S-ar putea să vă placă și