Pagini: [1] 2   În jos
  Imprimă  
Ajutor Subiect: 493 Cezar  (Citit de 15285 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
DITzoneC
Nu mai tace
*****

Karma: 301
Deconectat Deconectat

Mesaje: 962



Vezi Profilul
« : August 13, 2007, 22:57:10 »

Aici puteţi discuta despre problema Cezar.
Memorat
devilkind
Echipa infoarena
Nu mai tace
*****

Karma: 284
Deconectat Deconectat

Mesaje: 1.240



Vezi Profilul
« Răspunde #1 : August 15, 2007, 11:59:11 »

la ultima restrictie, aia cu testele, am impresia ca la una din ele Paul a uitat sa puna $.$ la N.
Memorat
DITzoneC
Nu mai tace
*****

Karma: 301
Deconectat Deconectat

Mesaje: 962



Vezi Profilul
« Răspunde #2 : August 15, 2007, 12:03:30 »

S-a corectat.
Memorat
raula_san
Strain
*

Karma: -23
Deconectat Deconectat

Mesaje: 32



Vezi Profilul
« Răspunde #3 : August 31, 2007, 14:06:42 »

atzi facut careva pb asta de 100 pe infoarena ? mie imi da mle p doua teste
Memorat

{oo}
   |
/\/\/\
\/\/\/
pauldb
Nu mai tace
*****

Karma: 821
Deconectat Deconectat

Mesaje: 1.901



Vezi Profilul
« Răspunde #4 : August 31, 2007, 14:38:01 »

Au facut-o cativa: http://infoarena.ro/monitor?task=cezar. Limita este exact ca la OJI.
Memorat

Am zis Mr. Green
Dastas
Vorbaret
****

Karma: 11
Deconectat Deconectat

Mesaje: 170



Vezi Profilul
« Răspunde #5 : August 31, 2007, 14:41:24 »

O modalitate de a reduce memoria folosita e sa folosesti short in loc de int unde se poate...
Memorat
raula_san
Strain
*

Karma: -23
Deconectat Deconectat

Mesaje: 32



Vezi Profilul
« Răspunde #6 : August 31, 2007, 14:46:52 »

k, 10x Wink
Memorat

{oo}
   |
/\/\/\
\/\/\/
megabyte
Client obisnuit
**

Karma: 45
Deconectat Deconectat

Mesaje: 74



Vezi Profilul
« Răspunde #7 : Decembrie 09, 2007, 15:31:29 »

 Brick wall ma poate ajuta cineva si pe mine, nu stiu dc iau numai 65 pct
Prima data construiesc un arbore cu radacina in 1 si calculez 2 vectori: bnd(i)-numarul de noduri ale subarborelui cu rad in i si bdr(i)-suma lungimilor tuturor drumurilor care vin de la fii la nodul i.Apoi calculez dr(i)- suma lungimilor tuturor drumurilor care vin din tot arborele cu formula : dr(t(i))+n-2*bnd(i), unde t(i)-tatal nodului i.Stabilesc centrul in nodul care are dr(i) minim.Solutia partiala ii dr(centru)
  Construiesc alt arbore cu radacina in centru si incep sa bag in heap_max vecinii centrului, cate un vecin i cu bdr(i) (reactualizat) ,extrag din heap nodul i cu bdr maxim, scad din solutia partiala numarul de noduri ale subarborelui i, si inserez in heap noii vecini ai nodului i.Dupa ce am scos k noduri presupun ca ar trebui sa-mi ramana solutia finala.
Care ar fi problema?
Memorat

Toate computerele asteapta cu aceeasi viteza.
pauldb
Nu mai tace
*****

Karma: 821
Deconectat Deconectat

Mesaje: 1.901



Vezi Profilul
« Răspunde #8 : Decembrie 09, 2007, 20:09:21 »

Din ce am inteles eu ca faci in partea a doua, tu alegi mereu nodul pentru care suma drumurilor din subarborele corespunzator este maxima. Daca faci asa, gandeste-te la urmatorul caz: un subarbore poate avea N noduri dispuse in lant sau poate avea N*(N+1)/2-1 noduri legate de radacina. Tu ai alege primul caz, deoarece suma drumurilor este N*(N+1)/2 > N*(N-1)/2-1. Cu toate astea, daca ai alege cel de-al doilea subarbore costul total ar scadea cu N*(N+1)/2-1, in timp ce primul scade costul total doar cu N.

La OJI probabil ai fi luat 90-95 de puncte cu solutia asta. Smile
Memorat

Am zis Mr. Green
megabyte
Client obisnuit
**

Karma: 45
Deconectat Deconectat

Mesaje: 74



Vezi Profilul
« Răspunde #9 : Decembrie 10, 2007, 10:19:36 »

 Pray  merci
 pfu, numi vine sa cred ca nu mam gandit la asta  Aha
« Ultima modificare: Decembrie 10, 2007, 10:48:35 de către Barsan Paul » Memorat

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

Karma: 5
Deconectat Deconectat

Mesaje: 111



Vezi Profilul
« Răspunde #10 : Ianuarie 15, 2008, 00:08:49 »

Paradoxul lui for( ; ; ) ;
Am rezolvat problema Cezar si am obtinut 95p cu MLE pe ultimul test. Plecand de la banuiala ca exista un caz particular k==n-1 introduc imediat dupa citirea n si k o instructiune if(k==n-1) for( ; ; ) ; asteptand bineinteles sa obtin TLE pe unul sau mai multe teste. Surpriza. Dupa intoducerea acestei linii in cod evaluatorul imi scoate 100 p. Asa ceva e dincolo de puterea mea de intelegere. PLS ...luminati-ma.
Memorat
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #11 : Ianuarie 15, 2008, 00:12:24 »

E cat se poate de simplu. Nu exista teste cu k == n-1, iar programul tau e chiar la limita cu memoria.
Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
anna_bozianu
De-al casei
***

Karma: 5
Deconectat Deconectat

Mesaje: 111



Vezi Profilul
« Răspunde #12 : Ianuarie 15, 2008, 00:18:00 »

Si eu care crezusem ca exista spiridushi.
Memorat
recviem
Client obisnuit
**

Karma: -26
Deconectat Deconectat

Mesaje: 62



Vezi Profilul
« Răspunde #13 : Februarie 13, 2008, 21:54:56 »

Am incercat programul oficial, si da TLE pe penultimul test si MLE pe ultimul. Si programul meu da MLE pe ultimul test la diferenta random intre 4 si 20 kb. Am modificat variabilele timp de o ora, nu am reusit nimic. Diferenta de memorie random este pe acelasi program. In ideea ca primul test mananca 644kb si al doilea 660kb.. chiar trebuie sa fie restrictiile atat de mici ?
Memorat
cos_min
Nu mai tace
*****

Karma: 48
Deconectat Deconectat

Mesaje: 493


live


Vezi Profilul
« Răspunde #14 : Februarie 13, 2008, 21:57:39 »

Din cate stiu eu, programul este oprit din rulat atunci cand depasesti memoria si deci iti afiseaza o valoare apropiata de maximul admis de memorie. Sper sa nu ma insel.
Memorat

vid...
recviem
Client obisnuit
**

Karma: -26
Deconectat Deconectat

Mesaje: 62



Vezi Profilul
« Răspunde #15 : Februarie 13, 2008, 21:59:37 »

Imi iese din memorie de la citire. si nu memorez decat un graf prin lista de muchii si inca 2 vectori. Ce sa scot de acolo nu am idee..
Memorat
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #16 : Februarie 13, 2008, 22:55:55 »

Poate poti sa folosesti short int in loc de long int. Short int merge pana de la -32568 la 32567.
Memorat

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

Karma: -26
Deconectat Deconectat

Mesaje: 62



Vezi Profilul
« Răspunde #17 : Februarie 13, 2008, 23:02:46 »

Am incercat short int pe combinari de variabile ... la nodurile din graf pica suspicios pe penultimul test cu TLE si tot nu scap de MLE ..

Inca o intrebare, cand dau delete (pointer), imi elibereaza memoria astfel incat sa o pot refolosi, sau tot ce aloc dupa se adauga in continuare fara sa ocupe spatiul eliberat ? ( cel putin la suma de memorie pe care o afiseaza evaluatorul )
« Ultima modificare: Februarie 14, 2008, 09:21:38 de către AleX . » Memorat
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #18 : Februarie 14, 2008, 11:53:43 »

Nu stiu exact cum se calculeaza memoria folosita. Ar trebui sa iti raspunda oameni mai competenti ca mine.

In schimb, te sfatuiesc sa nu mai folosesti pointeri. Retine graful sub forma de liste de adiacenta. Poti sa citesti mai multe aici.
Memorat

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


Karma: 0
Deconectat Deconectat

Mesaje: 2



Vezi Profilul
« Răspunde #19 : Martie 10, 2008, 11:10:38 »

Salut! am facut si eu problema, insa numa de 65 de puncte si nu imi dau seama ce gresesc. Am implementat cu heapuri si totdeauna bag frunzele in heap si apoi scot tot cea mai mica in functie de lungimea totala fata de toti fii sai. Practic fac desfunzire si cand dau de o frunza noua o bag in heap, iar apoi o scot tot pe cea mai mica. Iar in final raman cu k muchii. La sfarsit
fac suma intre nodurile legate de cele k muchii si ar trebui sa obtin solutia corecta.
Memorat
pauldb
Nu mai tace
*****

Karma: 821
Deconectat Deconectat

Mesaje: 1.901



Vezi Profilul
« Răspunde #20 : Martie 10, 2008, 12:30:45 »

S-a mai vorbit despre asta mai sus.
Memorat

Am zis Mr. Green
pauldb
Nu mai tace
*****

Karma: 821
Deconectat Deconectat

Mesaje: 1.901



Vezi Profilul
« Răspunde #21 : Martie 10, 2008, 12:43:41 »

Nu e intereseaza sa scoti in functie de lungimea minima fata de fii, ci in functie de numarul fiilor (si am dat exemplul de mai sus, sper ca acuma e inteligibil). Smile
Memorat

Am zis Mr. Green
constantin02
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 2



Vezi Profilul
« Răspunde #22 : Martie 10, 2008, 12:45:40 »

Ups...ai dreptate....acum am inteles  Very Happy
Memorat
otilia_s
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 12



Vezi Profilul
« Răspunde #23 : Martie 03, 2010, 12:12:04 »

      As avea si eu o nelamurire legata de memoria ocupata de un vector in STL.  Am obtinut 95 pct, cu MLE pe ultimul test, desi conform calculelor mele ar fi trebuit sa se incadreze. Programul meu contine urmatoarele declaratii :
const int NMAX=10002;
vector <short> A[NMAX];
short nf[NMAX],H[NMAX],nr[NMAX];

      Pentru vectorii de tip short ar trebui sa am 2 bytes*3 vectori*NMAX elemente=59 kb.
      In A, care este lista de adiacenta, voi aloca 2*(NMAX-1) valori de tip short (pt ca in ultimul test se dau 10000 noduri), care ocupa inca vreo 20 kb.
      Deci restul pana 640kb(si chiar mai mult) ar trebui sa fie ocupat de pointeri. Cum se calculeaza memoria utilizata de ei? Ma puteti ajuta, va rog?   Confused
Memorat
blasterz
Nu mai tace
*****

Karma: 92
Deconectat Deconectat

Mesaje: 255



Vezi Profilul
« Răspunde #24 : Martie 03, 2010, 12:40:08 »

Daca ai un vector din stl, de exemplu vector<short> , si in el ai adaugat (cu push_back) n elemente, vectorul va contine defapt 2^k > n elemente. De ex daca  n = 1025 vectorul va aloca 2048 de elemente de tip short.

poti folosi un truc pentru a micsora capacitatea (adica memoria folosita) vectorului la cat ai tu nevoie:

vector<short> (a).swap (a);
(practic creez un vector temporar si il inlocuiesc inapoi..)

poti sa afisezi a.capacity() inainte si dupa swap si o sa vezi diferenta Smile
Memorat
Pagini: [1] 2   În sus
  Imprimă  
 
Schimbă forumul:  

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