This shows you the differences between two versions of the page.
|
pa:laboratoare:laborator-01 [2026/03/01 10:37] darius.neatu [Extra (studiu de caz pentru acasă)] |
pa:laboratoare:laborator-01 [2026/03/04 11:39] (current) radu.nichita [Pool probleme (pentru prezentări)] |
||
|---|---|---|---|
| Line 7: | Line 7: | ||
| ===== Precizări inițiale ===== | ===== Precizări inițiale ===== | ||
| <note> | <note> | ||
| - | Toate exemplele de cod se găsesc pe pagina [[https://github.com/acs-pa/pa-lab/tree/main/demo/lab03|pa-lab::demo/lab03]]. | + | Toate exemplele de cod se găsesc pe pagina [[https://github.com/acs-pa/pa-lab/tree/main/algorithms/lab01|pa-lab/algorithms/lab01]]. |
| Exemplele de cod apar încorporate și în textul laboratorului pentru a facilita parcurgerea cursivă a acestuia. ATENȚIE! Varianta actualizată a acestor exemple se găsește întotdeauna pe GitHub. | Exemplele de cod apar încorporate și în textul laboratorului pentru a facilita parcurgerea cursivă a acestuia. ATENȚIE! Varianta actualizată a acestor exemple se găsește întotdeauna pe GitHub. | ||
| Line 13: | Line 13: | ||
| * Toate bucățile de cod prezentate în partea introductivă a laboratorului (înainte de exerciții) au fost testate. Cu toate acestea, este posibil ca din cauza mai multor factori (formatare, caractere invizibile puse de browser etc) un simplu copy-paste să nu fie de ajuns pentru a compila codul. | * Toate bucățile de cod prezentate în partea introductivă a laboratorului (înainte de exerciții) au fost testate. Cu toate acestea, este posibil ca din cauza mai multor factori (formatare, caractere invizibile puse de browser etc) un simplu copy-paste să nu fie de ajuns pentru a compila codul. | ||
| - | * Vă rugam să compilați **DOAR** codul de pe GitHub. Pentru raportarea problemelor, contactați unul dintre maintaineri. | + | * Vă rugăm să compilați **DOAR** codul de pe GitHub. Pentru raportarea problemelor, contactați unul dintre maintaineri. |
| * Pentru orice problemă legată de conținutul acestei pagini, vă rugam să dați e-mail unuia dintre responsabili. | * Pentru orice problemă legată de conținutul acestei pagini, vă rugam să dați e-mail unuia dintre responsabili. | ||
| Line 540: | Line 540: | ||
| </note> | </note> | ||
| - | * [[https://github.com/acs-pa/pa-lab/tree/main/algorithms/lab01/ssm|pa-lab/algorithms/lab01/ssm]] | ||
| - | * [[https://github.com/acs-pa/pa-lab/tree/main/algorithms/lab01/scmax|pa-lab/algorithms/lab01/scmax]] | ||
| - | * [[https://github.com/acs-pa/pa-lab/tree/main/algorithms/lab01/rucsac|pa-lab/algorithms/lab01/rucsac]] | ||
| ===== Pool probleme (pentru prezentări) ===== | ===== Pool probleme (pentru prezentări) ===== | ||
| + | ======= 1) Edit Distance ======= | ||
| + | |||
| + | **Enunt:** | ||
| + | Se dau două șiruri de caractere ''a'' și ''b''. | ||
| + | Într-o singură operație se poate: | ||
| + | * insera un caracter, | ||
| + | * șterge un caracter, | ||
| + | * înlocui un caracter cu altul. | ||
| + | |||
| + | Determinați numărul minim de operații necesare pentru a transforma șirul ''a'' în șirul ''b''. | ||
| + | |||
| + | **Date de intrare:** | ||
| + | Se citesc două șiruri de caractere. | ||
| + | |||
| + | **Date de ieșire:** | ||
| + | Se afișează un singur număr întreg — distanța minimă de editare dintre cele două șiruri. | ||
| + | |||
| + | Problema se poate testa la: | ||
| + | https://cses.fi/problemset/task/1639 | ||
| + | |||
| + | |||
| + | ======= 2) Projects ======= | ||
| + | |||
| + | **Enunt:** | ||
| + | Se dau ''n'' proiecte. Fiecare proiect este descris prin trei valori: ziua de început ''a'', ziua de sfârșit ''b'' și profitul ''p''. | ||
| + | Poți realiza un proiect doar dacă nu se suprapune cu alt proiect ales (intervalele nu trebuie să aibă zile comune). | ||
| + | |||
| + | Determinați profitul maxim care poate fi obținut alegând un subset de proiecte compatibile. | ||
| + | |||
| + | **Date de intrare:** | ||
| + | Pe prima linie se află un număr întreg ''n''. | ||
| + | Pe următoarele ''n'' linii se află câte trei numere întregi ''a'', ''b'', ''p''. | ||
| + | |||
| + | **Date de ieșire:** | ||
| + | Se afișează un singur număr întreg — profitul maxim posibil. | ||
| + | |||
| + | Problema se poate testa la: | ||
| + | https://cses.fi/problemset/task/1140 | ||
| + | |||
| + | |||
| + | ======= 3) Russian Doll Envelopes ======= | ||
| + | |||
| + | **Enunt:** | ||
| + | Se dă un vector de plicuri, unde fiecare plic este reprezentat prin două valori: lățimea și înălțimea sa. | ||
| + | Un plic poate fi introdus într-un alt plic dacă și numai dacă ambele dimensiuni (lățime și înălțime) sunt strict mai mici. | ||
| + | |||
| + | Determinați numărul maxim de plicuri care pot fi introduse unul în altul. | ||
| + | |||
| + | **Date de intrare:** | ||
| + | Un vector bidimensional ''envelopes'', unde ''envelopes[i] = [w_i, h_i]''. | ||
| + | |||
| + | **Date de ieșire:** | ||
| + | Un număr întreg reprezentând numărul maxim de plicuri care pot fi imbricate. | ||
| + | |||
| + | Problema se poate testa la: | ||
| + | https://leetcode.com/problems/russian-doll-envelopes/description/ | ||
| + | |||
| + | |||
| + | ======= 4) Largest Divisible Subset ======= | ||
| + | |||
| + | **Enunt:** | ||
| + | Se dă un vector de numere întregi distincte. | ||
| + | Determinați cel mai mare subset astfel încât pentru orice două elemente ''a'' și ''b'' din subset, fie ''a'' îl divide pe ''b'', fie ''b'' îl divide pe ''a''. | ||
| + | |||
| + | Dacă există mai multe soluții, se poate afișa oricare dintre ele. | ||
| + | |||
| + | **Date de intrare:** | ||
| + | Un vector de numere întregi distincte ''nums''. | ||
| + | |||
| + | **Date de ieșire:** | ||
| + | Un vector care reprezintă un subset valid de dimensiune maximă. | ||
| + | |||
| + | Problema se poate testa la: | ||
| + | https://leetcode.com/problems/largest-divisible-subset/description/ | ||
| + | |||
| + | |||
| + | ======= 5) Best Time to Buy and Sell Stock III ======= | ||
| + | |||
| + | **Enunt:** | ||
| + | Se dă un vector ''prices'', unde ''prices[i]'' reprezintă prețul unei acțiuni în ziua ''i''. | ||
| + | Puteți efectua cel mult două tranzacții (o tranzacție constă într-o cumpărare urmată de o vânzare). | ||
| + | |||
| + | Nu puteți deține mai multe acțiuni simultan (trebuie să vindeți înainte de a cumpăra din nou). | ||
| + | |||
| + | Determinați profitul maxim care poate fi obținut. | ||
| + | |||
| + | **Date de intrare:** | ||
| + | Un vector de numere întregi ''prices''. | ||
| + | |||
| + | **Date de ieșire:** | ||
| + | Un număr întreg reprezentând profitul maxim posibil. | ||
| + | |||
| + | Problema se poate testa la: | ||
| + | https://leetcode.com/problems/best-time-to-buy-and-sell-stock-iii/description/ | ||
| ===== Extra (studiu de caz pentru acasă) ===== | ===== Extra (studiu de caz pentru acasă) ===== | ||
| Line 553: | Line 644: | ||
| </spoiler> | </spoiler> | ||
| - | <spoiler Custi> | + | <spoiler CMLSC> |
| - | Rezolvati pe infoarena problema [[https://infoarena.ro/problema/cmlsc| CMLSC]]. | + | Rezolvati pe infoarena problema [[https://infoarena.ro/problema/cmlsc| CMLSC]]. Similar, problema se poate găsi și [[Leetcode | https://leetcode.com/problems/longest-common-subsequence/description/]]. |
| </spoiler> | </spoiler> | ||