Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: Problema Informatica - Olimpiada  (Citit de 5479 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
RazvanInfo10
Strain
*

Karma: 2
Deconectat Deconectat

Mesaje: 32



Vezi Profilul
« : Septembrie 17, 2013, 00:34:51 »

Salut, sunt in clasa a-11-a, si ma bate la cap o problema de informatica:

Primăria a construit un nou centru pentru conferinţe. N companii şi-au manifestat interesul de a închiria centrul pentru a ţine propriile conferinţe. O companie client doreşte să închirieze centrul doar dacă acesta este disponibil pe întreaga durată a evenimentului. Primăria a decis că cea mai bună strategie de închiriere este aceea de a face un profit cât mai mare în urma închirierii, prin urmare va închiria centrul de conferinţe acelor companii în urma cărora va obţine un profit maxim. Pentru fiecare companie client se cunoaşte perioada pentru care doreşte să închirieze centrul de conferinţe, precum şi suma de bani pe care e dispusă să o plăteasca pentru inchiriere.
Cerinţă
Scrieţi un program care determină profitul maxim pe care poate să îl obţină primăria prin închirerea centrului de conferinţe

Exemplu:

profit.in:

6
1 5 6
4 7 3
7 10 8
2 4 2
6 12 9
9 11 5

profit.out:

15

Sunt oarecum incepator in Informatica, dar vreau sa stiu daca gandesc bine problema, parerea mea este:
Sa luam ex:1 5 6 --> In intervalul de timp: 1-5 s-a castigat 6, trebuie sa verific toate celelalte intervale de timp care sunt egale sau intre acestea, si sa comparam castigul ? De ex:
1 5 6
7 10 8
6 12 9
---> In intervalul 6-12 se castiga 9, iar in intervalul 7-12(este mai mic) dar se castiga doar 8, deci o sa se ia cel mai mare castig ?
O gandesc bine problema?Va rog sa-mi explicati ce gresesc si unde gresesc.
Multumesc mult.
Memorat
PlayLikeNeverB4
Nu mai tace
*****

Karma: 212
Deconectat Deconectat

Mesaje: 721



Vezi Profilul
« Răspunde #1 : Septembrie 17, 2013, 17:39:31 »

Ar fi util sa postezi si limitele pentru N si pentru intervale.
Memorat
RazvanInfo10
Strain
*

Karma: 2
Deconectat Deconectat

Mesaje: 32



Vezi Profilul
« Răspunde #2 : Septembrie 17, 2013, 20:31:28 »

•   1 ≤ N ≤ 100000
•   1 ≤ a ≤ b ≤ 100000
•   Pentru 30% din teste, N ≤ 20.
•   Pentru 70% din teste, N ≤ 5 000.
Dacă o conferinţă are loc între momentele de timp a şi b,atunci se consideră că şi capetele a si b fac parte din conferinţă
Memorat
PlayLikeNeverB4
Nu mai tace
*****

Karma: 212
Deconectat Deconectat

Mesaje: 721



Vezi Profilul
« Răspunde #3 : Septembrie 17, 2013, 22:01:28 »

Problema se face cu programare dinamica. Initial sortezi intervalele dupa capatul din stanga.
Starea este dp[i] = profitul maxim dintre primele i intervale.
Fiind la intervalul i, ai doua variante: fie nu il alegi si mergi in dp[i + 1]; fie il alegi si mergi in dp[j], unde j este cel mai mic indice astfel incat intervalul j nu e inclus in intervalul i. Indicele j il poti afla prin cautare binara.
Deci, complexitatea finala: O(NlogN).
Memorat
RazvanInfo10
Strain
*

Karma: 2
Deconectat Deconectat

Mesaje: 32



Vezi Profilul
« Răspunde #4 : Septembrie 17, 2013, 22:04:19 »

Foarte Complicat, nu pot face asa ceva in cod...
Memorat
deneo
Vorbaret
****

Karma: 185
Deconectat Deconectat

Mesaje: 160



Vezi Profilul
« Răspunde #5 : Septembrie 17, 2013, 22:25:02 »

Nasol atunci. Fa probleme mai simple.
Memorat
freak93
Echipa infoarena
Nu mai tace
*****

Karma: 342
Deconectat Deconectat

Mesaje: 819



Vezi Profilul
« Răspunde #6 : Septembrie 18, 2013, 08:24:23 »

a si b sunt mici ca poate face O(N): DP = max(DP[i - 1], DP[a - 1] + 1 unde [a, i]  e un interval din alea N)
Memorat
RazvanInfo10
Strain
*

Karma: 2
Deconectat Deconectat

Mesaje: 32



Vezi Profilul
« Răspunde #7 : Septembrie 18, 2013, 13:49:49 »

Am inteles, eu invat informatica singur acasa(clasa 11) si invat de 2 luni, ce spuneti este timp pana in februarie sa pot participa la olimpiada de Informatica(pana la judeteana, nu cer mai mult(inca nu am experienta)).Si vreau sa-mi dati niste sfaturi daca se poate cum sa invat, si daca am timp in acest interval.
Memorat
freak93
Echipa infoarena
Nu mai tace
*****

Karma: 342
Deconectat Deconectat

Mesaje: 819



Vezi Profilul
« Răspunde #8 : Septembrie 19, 2013, 08:37:25 »

Intra pe arhiva educationala si incearca sa iti pui la punct cunostintele. Acolo problemele sunt explicate si au exemple. Cand ti se pare ca ai inteles pe deplin una din probleme ai sa gasesti la sfarsitul paginii o lista de probleme ce folosesc acel concept, incearca sa le rezolvi pe fiecare, dar daca nu iti ies nu te speria, unele necesita mult mai mult decat inveti din arhiva educationala. Smile
Memorat
RazvanInfo10
Strain
*

Karma: 2
Deconectat Deconectat

Mesaje: 32



Vezi Profilul
« Răspunde #9 : Septembrie 19, 2013, 13:01:34 »

Am inteles, eu sunt matematica-informatica(liceu) dar nu ma pricep prea bine la Matematica, stiu decat bazele(de maxim un 6 la bacalaureat) are vreun efect ? La facultatea de matematia-informatica, specializarea: Informatica, se pune mare accent pe matematica?
Memorat
freak93
Echipa infoarena
Nu mai tace
*****

Karma: 342
Deconectat Deconectat

Mesaje: 819



Vezi Profilul
« Răspunde #10 : Septembrie 20, 2013, 07:54:15 »

La Universitatea Bucuresti da, e important sa iti pui bine la punct cunostiintele de mate pentru facultate, insa pentru informatica (olimpiada) cunostiintele de mate pana in clasa a 10-a sunt aproximativ suficiente,  ele pe care le dobandesti in clasele 11-12 sunt mai putin importante decat ce poti invata la informatica.
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines