Pagini: 1 2 [3] 4 5   În jos
  Imprimă  
Ajutor Subiect: 026 Energii  (Citit de 39904 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
pirosl
Strain
*

Karma: -2
Deconectat Deconectat

Mesaje: 34



Vezi Profilul
« Răspunde #50 : Octombrie 31, 2007, 12:54:41 »

Nu gresesti, dar nu ti se pare suficient de mare 10 000 * 1000, cum calculezi valorile ca sa iti intre in timp ?

Am scris mai sus cum calculez. Mi se pare ciudat ca 19 teste trec cu timpi sub 5 ms si unul pica dupa 100 si ceva de ms. In plus conditia din enuntul problemei (1< eg,gg < 10001) e falsa, pentru ca se pare ca sunt teste pt care gg e 0 (!?!?).
Sa inteleg ca exista un singur test cu valori mari?
« Ultima modificare: Octombrie 31, 2007, 12:57:17 de către Piros Lucian » Memorat
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #51 : Octombrie 31, 2007, 13:17:39 »

Pentru urmatorul test, ce face programul tau?

Cod:
2
10
7 10000
8 10000

M-am uitat in codul tau si eroarea vine de la faptul ca declari maxsize prea mic. Ar trebui sa fie 10.000.000, nu 1000. Dupa cum a spus si Adi mai sus, incerca sa regandesti problema, pentru ca solutia ta nu merge pentru costuri mari. Faptul ca ai luat 95 de pct nu inseamna ca ai un mic bug in implementare, ci ca testele sunt proaste. Cu maxsize = 10.000.000 (atat cat ar trebui sa fie), primesti Killed by signal 11, pentru ca declari prea multa memorie. Daca il pun 1.000.000, desi iti intra in memorie, primesti TLE. Pentru a verifica daca o solutie e buna, incearca sa iti dai teste maxime. Un exemplu pentru problema aceasta ar fi:

Cod:
1000
1000
1 10000
1 10000
.............
1 10000

G = 1000, W = 1000, si fiecare generator are EG = 1, si EC = 10000. Raspunsul corect este 10.000.000
« Ultima modificare: Octombrie 31, 2007, 13:33:28 de către Andrei Grigorean » Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
pirosl
Strain
*

Karma: -2
Deconectat Deconectat

Mesaje: 34



Vezi Profilul
« Răspunde #52 : Octombrie 31, 2007, 13:42:55 »

Pentru urmatorul test, ce face programul tau?

Cod:
2
10
7 10000
8 10000

M-am uitat in codul tau si eroarea vine de la faptul ca declari maxsize prea mic. Ar trebui sa fie 10.000.000, nu 1000. Dupa cum a spus si Adi mai sus, incerca sa regandesti problema, pentru ca solutia ta nu merge pentru costuri mari. Faptul ca ai luat 95 de pct nu inseamna ca ai un mic bug in implementare, ci ca testele sunt proaste. Cu maxsize = 10.000.000 (atat cat ar trebui sa fie), primesti Killed by signal 11, pentru ca declari prea multa memorie. Daca il pun 1.000.000, desi iti intra in memorie, primesti TLE. Pentru a verifica daca o solutie e buna, incearca sa iti dai teste maxime. Un exemplu pentru problema aceasta ar fi:

Cod:
1000
1000
1 10000
1 10000
.............
1 10000

G = 1000, W = 1000, si fiecare generator are EG = 1, si EC = 10000. Raspunsul corect este 10.000.000

Great...multam de tip....am incercat sa ma joc cu acel maxsize pt a intelege ce e cu acel test care pica (si probabil ca ultima sursa e cu maxsize prea mic).
Memorat
nash
De-al casei
***

Karma: 0
Deconectat Deconectat

Mesaje: 109



Vezi Profilul
« Răspunde #53 : Ianuarie 15, 2008, 10:47:57 »

 E o chestie care nu o intaleg ...
      Problema cere "o solutie de cost minim, pentru a produce o cantitate de energie egala sau mai mare cu cea necesara repornirii centralei"  , adica daca eu tebuie sa fac rost de G - energie cu cost min ... si observ ca nu se poate forma cantitatea acesta de energie atunci incep sa caut in G+1 , G+1 ... etc .. energie care se poate forma de cost min .

 Eu fac ceva in genul urmator ...
Cod:
for(i=1;i<=N;i++)
         for(j=1;j<=2*G;j++) {
             Energie[i%2][j] = max( verifica((i-1)%2,j-reactor[i]) , Energie[(i-1)%2][j] );
             cost_min[i%2][j]=MAXINT;
             if(Energie[i%2][j]) {
                if(verifica((i-1)%2,j-reactor[i])) cost_min[i%2][j]=min(cost_min[(i-1)%2][j-reactor[i]]+cost[i] , cost_min[i%2][j]);
                cost_min[i%2][j]= min(cost_min[i%2][j],cost_min[(i-1)%2][j]);
             }
         }

E logic ca trebuie sa iasa din timp ( fac pana la 2*G ) dar nu e logic de ce pe cele care intra .. da raspuns gresit ..
Memorat
nash
De-al casei
***

Karma: 0
Deconectat Deconectat

Mesaje: 109



Vezi Profilul
« Răspunde #54 : Ianuarie 15, 2008, 23:58:43 »

Nu are nimeni nici o idee ?
Memorat
megabyte
Client obisnuit
**

Karma: 45
Deconectat Deconectat

Mesaje: 74



Vezi Profilul
« Răspunde #55 : Ianuarie 16, 2008, 10:12:44 »

pai nu inteleg dece mergi pana la 2*G, G ii numarul de generatoare, poate fi un singur generator care produce 10 000 "1 < EGi,CGi < 10001 "
problema ii un knapsack, prima data trebuie sa o rezolvi cu o matrice c[nr_gen][en]-costul minim cu care poti obtine energia en cu nr_gen generatoare, si mergi cu en pana la WMAX .Dupa ce ai rezolvat-o cu matrice incerci sa reduci memoria la 2 linii , sau mai mult poti folosi un singur vector Smile
LE: sau stai, ca la tine N ii nr de generatoare, atunci cand incerci sa introduci un generator nou verifici starea c[nr_gen-1][en-generator[nr_gen]] si nu (i-1)*2 si 2*i , s-a discutat mult la problema asta si poti gasi detalii in paginile anterioare...
« Ultima modificare: Ianuarie 16, 2008, 10:56:09 de către Barsan Paul » Memorat

Toate computerele asteapta cu aceeasi viteza.
nash
De-al casei
***

Karma: 0
Deconectat Deconectat

Mesaje: 109



Vezi Profilul
« Răspunde #56 : Ianuarie 16, 2008, 23:56:07 »

daca ai citi bine rezolvarea mea .. ti-ai da seama ca am folosit problema rucsacului .. etc ... chestia cu liniic ...ca e nevioe decat de doua .. daca te-ai utia .. chiar cu 2 linii lucrez ... Tongue .. lucrez  " % 2"  ...
Memorat
gabitzish1
Moderatori infoarena
Nu mai tace
*****

Karma: 321
Deconectat Deconectat

Mesaje: 926



Vezi Profilul
« Răspunde #57 : Ianuarie 17, 2008, 00:21:28 »

Eu am facut asa:
Am facut un rucsac pt a gasi energiile ce se pot obtine si daca gaseam o valoare mai mare decat G si cu costul < minim, actualizam minimul (initializat initial cu o valoare destul de mare). Mi'am creat o structura in care retin costul si energia unui generator si 2 vectori pe care ii construiesc la rucsac: E[ i ] == 1 => energia se poate obtine folosind generatoarele altfel E[ i ] == 0 si C[ i ] - costul necesar obtinerii energiei i ...
« Ultima modificare: Ianuarie 17, 2008, 10:10:18 de către Andrei Grigorean » Memorat
myrcea
Strain


Karma: -11
Deconectat Deconectat

Mesaje: 4



Vezi Profilul
« Răspunde #58 : Ianuarie 19, 2008, 15:27:47 »

eu trimis o problema( energii),merge,dar evaluatorul imi da doar 0p imi apare eroare de compliare 
« Ultima modificare: Ianuarie 19, 2008, 15:52:43 de către Stefan Istrate » Memorat
gabitzish1
Moderatori infoarena
Nu mai tace
*****

Karma: 321
Deconectat Deconectat

Mesaje: 926



Vezi Profilul
« Răspunde #59 : Ianuarie 19, 2008, 15:31:03 »

Nu e un bug ci sursa ta e de vina.. daca citeai putina documentatie, stiai ca in loc de void main() tre sa pui int main() si functia sa returneze 0.
« Ultima modificare: Ianuarie 19, 2008, 15:52:55 de către Stefan Istrate » Memorat
myrcea
Strain


Karma: -11
Deconectat Deconectat

Mesaje: 4



Vezi Profilul
« Răspunde #60 : Ianuarie 19, 2008, 15:56:05 »

ms Aha
Memorat
drywater
Strain


Karma: -1
Deconectat Deconectat

Mesaje: 3



Vezi Profilul
« Răspunde #61 : Ianuarie 28, 2008, 21:04:07 »

am incercat cu greedy si imi da 45 puncte pe sursa
Memorat
cos_min
Nu mai tace
*****

Karma: 48
Deconectat Deconectat

Mesaje: 493


live


Vezi Profilul
« Răspunde #62 : Ianuarie 28, 2008, 21:32:00 »

Incearca dinamica si o sa iei 100.  Smile
Daca nu reusesti sa te prinzi, sfaturi gasesti in pag anterioare ale acestui subiect sau vezi ca sursele la pb asta sunt publice. Spor!
Memorat

vid...
blue_phoenix
Client obisnuit
**

Karma: 0
Deconectat Deconectat

Mesaje: 57



Vezi Profilul
« Răspunde #63 : Aprilie 24, 2008, 19:28:26 »

Imi cer scuze ca scriu aici...am mai multe manuale si carti de C++ (cum ar fi "Algoritmi fundamentali in C++" de Doina Logofatu), si lucrez de aproximativ 2 saptamani, dar tot nu reusesc sa inteleg programarea dinamica.... Confused, puteti sa-mi recomandati vreo carte care sa trateze mai clar subiectul?(am cautat linkuri, dar nu am gasit cine stie ce)Multumesc!
Memorat
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #64 : Aprilie 24, 2008, 19:31:18 »

Din cormen ai citit? Este un capitol intreg despre dinamica acolo...
Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
blue_phoenix
Client obisnuit
**

Karma: 0
Deconectat Deconectat

Mesaje: 57



Vezi Profilul
« Răspunde #65 : Aprilie 24, 2008, 19:34:33 »

nu stiu... cormen e carte sau problema?  Eh?
Memorat
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #66 : Aprilie 24, 2008, 19:36:17 »

cormen, CLR sau biblia... se refera la cartea "Introducere in algoritmi". O poti cumpara de pe net in limba romana, sau ai o varianta in engleza, online, aici.
Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
blue_phoenix
Client obisnuit
**

Karma: 0
Deconectat Deconectat

Mesaje: 57



Vezi Profilul
« Răspunde #67 : Aprilie 24, 2008, 19:37:03 »

Multumesc mult! Very Happy
Pentru cine nu a inteles programarea dinamica, eu m-am lamurit din cartea Emanuelei Cerchez,"Culegere de probleme pentru liceu", editura Polirom. Dancing
« Ultima modificare: Aprilie 25, 2008, 18:08:43 de către Posea Elena » Memorat
Irnuk
Strain


Karma: -2
Deconectat Deconectat

Mesaje: 2



Vezi Profilul
« Răspunde #68 : Iulie 27, 2008, 16:42:11 »

tinand cont ca nu stiu programare dinamica am incercat sa fac aceasta problema cu un greedy, dar iau doar 45 pct. La toate cele 11 teste pe care iau 0 primesc WA.
Este din cauza ca gresesc eu ceva, sau pe aceasta problema nu pot lua 100 cu greedy?
Memorat
pauldb
Nu mai tace
*****

Karma: 821
Deconectat Deconectat

Mesaje: 1.901



Vezi Profilul
« Răspunde #69 : Iulie 27, 2008, 19:30:40 »

Nu, nu ar trebui sa poti lua 100 cu greedy, deoarece nu este o rezolvare corecta (presupun ca iti poti gasi exemple usor, pentru care nu ar trebui sa mearga rezolvarea ta). Ar fi bine sa inveti programare dinamica, nu cred ca o sa te descurci la concursuri fara.
Memorat

Am zis Mr. Green
popoiu.george
Vorbaret
****

Karma: 19
Deconectat Deconectat

Mesaje: 162



Vezi Profilul
« Răspunde #70 : Ianuarie 10, 2010, 20:38:25 »

Fac dinamica si tin o matrice Cost(i,j) = costul minim necesar pentru a da o energie >=j, folosind primele i generatoare si iau 0 puncte.

intr-un vector sum(i) retin suma energiilor primelor i generatoare.

Uitati cum fac.

Cod:
for(int i=1;i<=W;i++)Cost[0][j]=INF;
for(int i=1;i<=G;i++)
    {
   for(int j=1;j<=W;j++)
       {
       if( j-E[i]>=0 && sum[i-1]>=j-E[i] && Cost[i-1][j-E[i]]+C[i]<Cost[i-1][j] ) Cost[i][j]=Cost[i-1][j-E[i]]+C[i];
       else Cost[i][j]=Cost[i-1][j];
       }
    }

Am citit in topic ca au mai incercat si altii asa si nu le-a iesit si vreau sa stiu ce e gresit in judecata, ca sa inteleg mai bine dinamica. Imi puteti explica, va rog?  sad
« Ultima modificare: Ianuarie 10, 2010, 20:47:48 de către Popoiu George » Memorat
vladtarniceru
De-al casei
***

Karma: 81
Deconectat Deconectat

Mesaje: 145



Vezi Profilul
« Răspunde #71 : Martie 26, 2010, 17:19:16 »

am si eu 2 intrebari Confused
un generator poate fi pornit o data sau de mai multe ori?
si daca am :
  3
  4
  100 2
  200 3
  300 4
 
afisez -1?(pentru ca am dat prea multa energie?)

sau -1 afisez in cazul

  2
  1000
  1 2
  2 3

(pentru ca fol generatorul decat o singura data)
Memorat
popoiu.george
Vorbaret
****

Karma: 19
Deconectat Deconectat

Mesaje: 162



Vezi Profilul
« Răspunde #72 : Martie 26, 2010, 18:18:46 »

O data.
Memorat
xtreme
De-al casei
***

Karma: -26
Deconectat Deconectat

Mesaje: 118



Vezi Profilul
« Răspunde #73 : Octombrie 11, 2010, 13:26:38 »

Testele nu corepund cu restrictiile din enunt:
1 < EGi,CGi < 10001
Am verificat cu assert.
http://infoarena.ro/job_detail/491459
Memorat
SpiderMan
Nu mai tace
*****

Karma: -463
Deconectat Deconectat

Mesaje: 937



Vezi Profilul
« Răspunde #74 : Octombrie 11, 2010, 13:38:41 »

Da, trebuie corectat asa : 0 <= EGi, CGi < 10001 . ( http://infoarena.ro/job_detail/491472?action=view-source )
« Ultima modificare: Octombrie 11, 2010, 13:46:38 de către Simoiu Robert » Memorat
Pagini: 1 2 [3] 4 5   În sus
  Imprimă  
 
Schimbă forumul:  

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