Documente Academic
Documente Profesional
Documente Cultură
12 30 16 30
15 0 18 0
10 0 18 30
18 0 20 45
12 15 13 0
Solutie
P1. Ordonm spectacolele cresctor dup ora terminrii lor.
P2. Selectm initial primul spectacol (deci cel care se termin cel mai devreme).
P3. Selectm primul spectacol neselectat, care nu se suprapune cu cele deja selectate (deci cel
care ncepe dup ce s-a terminat ultimul spectacol selectat)
P4. Dac nu se mai pot face alegeri, algoritmul se termin. Altfel, se selecteaz spectacolul
gsit si se reia algoritmul de la pasul P3.
Pag 1/6
sortare descrescatoare dupa terminare a spectacolelor (s[1..n])
sol[1]a[1]
k1
pentru i2,n execut
| dac s[i].inceput>=sol[k].terminare
| | atunci kk+1; sol[k]s[i]
|
scrie sol[1..n]
Solutie
Vom reprezenta o solutie a problemei ca un vector x, cu n componente, n care retinem pentru
fiecare obiect fractiunea ncrcat n rucsac. Deci vectorul x trebuie s ndeplineasc
urmtoarele conditii:
1). xi[0, 1], i{1, 2, , n}.
2). g1 x1 + g2 x2 + + gn xn Gmax
3). f(x) = c1 x1 + c2 x2 + + cn xn este maxim.
Algoritmul:
P1. Ordonm obiectele descresctor dup cstigul pe unitatea de greutate (valoare care
constituie o msur a eficientei transportrii obiectelor).
P2. Ct timp este posibil (ncap n rucsac), selectm n ordinea dat obiectele n ntregime.
P3. Completm rucsacul cu un fragment din urmtorul obiect ce nu a fost selectat
6. Problema banilor
(Greedy euristic - soluie obinut nu este ntotdeauna optim)
Scriei un program, care afieaz modalitatea de plat, folosind un numr minim de bancnote, a
unei sume ntregi S de lei (S<20000). Plata se efectueaz folosind bancnote de n tipuri distincte cu
valorile b1=1 leu, b2,...bn, cu valoarea de lei. Din fiecare tip de bancnote avem la dispoziie un numr
nelimitat.
Pag 2/6
Intrare: Fiierul text BANI.IN
67 (=S)
3 (=n )
1 5 10
Ieire: 6x10+1x5+2x1
Se d o tabl de ah cu dimensiunea nxn. Un cal se afl n poziia (1,1). Scriei un program care s
afieze un ir de mutri ale calului astfel nct acesta s acopere ntreaga tabl fr a trece printr-o
csu de dou ori.
Un comis voiajor pleac dintr-un anumit ora i trebuie s viziteze un numr de orae i s se ntoarc n
oraul din care a plecat, cu un efort minim.
Orice ora i este legat de orice alt ora j printr-un drum de A[i][j] km. Se cere traseul pe care trebuie sa-l
parcurg comisul astfel nct s parcurg un numr minim de kilometri.
matricea A
0 1 5 5 3
1 0 2 4 1
5 2 0 6 1
5 4 6 0 9
3 1 1 9 0
O soluie: 1,2,5,3,4,1
lungime drum=14
OBS. Dac nu toate oraele sunt legate ntre ele printr-o osea putem considera c dintana dintre ele
este un numr foarte mare ( km).
Sunt date N ri precizndu-se relaiile de vecintate. Se cere o posibilitate de colorare a hrii celor N
ri astfel nct s nu existe ri vecine colorate la fel.
Pag 3/6
Un instructor de schi are la dispoziie n perechi de schiuri (n<50) pe care trebuie s le distribuie
la n elevi nceptori. Scriei un program care s distribuie cele n perechi de schiuri astfel nct
suma diferenelor absolute dintre nlimea elevului si lungimea schiurilor atribuite s fie minim.
Din fisierul ZigZag.in se citesc N numere ntregi (N1000). Afisai pe prima linie a fisierului
ZigZag.out cel mai lung MZigZag care se poate construi din numerele citite. Numim
MZigZag o secven de numere a1, a2, ..., am astfel nct a1a2a3a4a5... am-1am.
De exemplu:
ZigZag.in ZigZag.out
7
7 5 0 1 4 9 3 0 9 3 7 1 5 4
Se consider n iruri de numere ordonate cresctor S1,S2,...,Sn, avnd lungimile L1, L2, ...,Ln.
S se interclaseze irurile date i s se obin un nou ir cu lungimea L1+L2+L3+...+Ln, astfel
nct numrul de comparaii ntre elementele irurilor date s fie minim.
Date de intrare
Fisierul de intrare react.in contine:
pe prima linie numrul natural N, care reprezint numrul de reactivi;
pe fiecare dintre urmtoarele N linii se afl min max (dou numere ntregi separate printr-un
spatiu);
numerele de pe linia x+1 reprezint temperatura minim, respectiv temperatura maxim de
stocare a reactivului x.
Date de iesire
Fisierul de iesire react.out va contine o singur linie pe care este scris numrul minim de
frigidere necesar.
Restrictii
1 N 8000
-100 minx maxx 100 (numere ntregi, reprezentnd grade Celsius), pentru orice x
de la 1 la N
un frigider poate contine un numr nelimitat de reactivi
Exemple
Exemplul 1 Exemplul 2 Exemplul 3
reactivi.in reactivi.out reactivi.in reactivi.out reactivi.in reactivi.out
3 2 5 2 4 3
-10 10 -10 10 2 5
-2 5 10 12 5 7
Pag 4/6
20 50 -20 10 10 20
7 10 30 40
7 8
Date de Intrare
Fisierul de intrare linterv.in va contine mai multe teste. Pe prima linie se va
afla T numarul de teste. Pe prima linie a fiecarui test se va afla N - numarul de intervale,
urmand N linii cu cate doua numere Ai si Bi - capetele intervalelor.
Date de Iesire
Fisierul de iesire linterv.out va contine T linii pe fiecare aflandu-se un singur numar x -
suma calculata.
Restrictii
1 N 5.000
-1.000.000 Ai Bi 1.000.000
1 T 75
Exemplu
linterv.in linterv.out
1 18
6
-5 5
0 3
2 8
10 13
11 15
100 100
Pag 5/6
Se consider un sir de n intervale [ai,bi], cu ai, bi numere ntregi. Un interval [c,d] poate fi
eliminat din sir dac exist un alt interval [x,y] din sir care s- includ: [c,d][x,y]. Determinat
numrul maxim de intervale care pot fi eliminate.
Restrictii:
n<16000
ai,bi<2000000000
Exemplu>
7 se va afisa:
0 10 4
2 9
3 8
1 15
6 20
1 7
2 5
La parcurgerea sirului dublu-sortat se va actualiza cel mai mare capt din dreapta maxd (initial
maxd=extremitatea dreapta a primului interval). Un interval cu extremitatea dreapt
d < maxd este inclus intr-ul altul din sir, deci va fi eliminat, altfel maxd=d.
Exemplu:
intrare: N = 5, intervalele: [0, 2], [1, 7], [2, 6], [5, 14], [8, 16]
iesire: M = {2, 14}
explicatie: punctul 2 se afla n primele 3 intervale, iar punctul 14 n ultimele 2
Pag 6/6