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

Karma: 301
Deconectat Deconectat

Mesaje: 962



Vezi Profilul
« : Martie 25, 2007, 13:26:57 »

Aici puteţi discuta despre problema Dezastru.
Memorat
raduzer
Client obisnuit
**

Karma: 62
Deconectat Deconectat

Mesaje: 71



Vezi Profilul
« Răspunde #1 : Martie 26, 2007, 15:36:59 »

ce optimizari as putea face daca am facut un back in care am luat toate combinarile de k numere astfel incat ele sa fie luate crescator(un grup sa fie luat o singura data) ? ca iau 70 de puncte si 3 TLE
Memorat
ctes
Strain
*

Karma: 3
Deconectat Deconectat

Mesaje: 25



Vezi Profilul
« Răspunde #2 : Martie 26, 2007, 17:52:55 »

probabil fara back....  Tongue
Memorat
CezarMocan
Nu mai tace
*****

Karma: 252
Deconectat Deconectat

Mesaje: 567



Vezi Profilul
« Răspunde #3 : Martie 26, 2007, 18:26:44 »

Nu, si solutia oficiala e cu back...
Memorat
skyel
Nu mai tace
*****

Karma: 29
Deconectat Deconectat

Mesaje: 263



Vezi Profilul
« Răspunde #4 : Martie 26, 2007, 18:40:28 »

poi si atunci cum...k io cu back iau 4 tle..si nu folosesc in functia de back mai deloc memorie...
LE: la sol oficiala nu precizeaza nimic de back, si nici nu spune ca ar obtine 100 cu combinari....
« Ultima modificare: Martie 26, 2007, 18:46:43 de către Ghitulete Razvan » Memorat
bogdan2412
Echipa infoarena
Nu mai tace
*****

Karma: 410
Deconectat Deconectat

Mesaje: 951



Vezi Profilul
« Răspunde #5 : Martie 26, 2007, 18:52:37 »

Se ia 100 cu Combinari de N luate cate K.. nu folosi long double cum am facut eu in concurs Smile.
Vezi ca daca esti la pasul k in stiva poti limita superior valoarea care poti s-o pui ( cand faci combinari tii valorile ordonate crescator in stiva ).
Memorat
CezarMocan
Nu mai tace
*****

Karma: 252
Deconectat Deconectat

Mesaje: 567



Vezi Profilul
« Răspunde #6 : Martie 26, 2007, 18:58:04 »

Exact asta fac si eu...combinari de n luate cate k, in stiva pe pozitia i pun de la st[i-1]+1 pana la n si iau doar 60 cu TLE.
Trebuie facut back-ul iterativ?? Whistle
Memorat
skyel
Nu mai tace
*****

Karma: 29
Deconectat Deconectat

Mesaje: 263



Vezi Profilul
« Răspunde #7 : Martie 26, 2007, 19:07:23 »

da ce rost are sa tii minte elementele combinarii? Huh
Memorat
domino
Echipa infoarena
Nu mai tace
*****

Karma: 281
Deconectat Deconectat

Mesaje: 1.340



Vezi Profilul WWW
« Răspunde #8 : Martie 26, 2007, 19:17:11 »

Daca nu va intra in timp, puteti incerca oricand o solutie cu programare dinamica  Ok
Memorat
CezarMocan
Nu mai tace
*****

Karma: 252
Deconectat Deconectat

Mesaje: 567



Vezi Profilul
« Răspunde #9 : Martie 26, 2007, 19:18:39 »

Mda...  Think. Totusi, am inceput cu back si vreau sa o duc la bun sfarsit asa... nu ma dau eu batut... Mr. Green
Memorat
Bluedrop_demon
Client obisnuit
**

Karma: -3
Deconectat Deconectat

Mesaje: 66



Vezi Profilul
« Răspunde #10 : Martie 26, 2007, 19:23:41 »

Referitor la metoda back... se pot face niste optimizari pentru a vedea pe fiecare nivel intre ce valori poti considera elementul din permutare. De asemenea poti face vectorul lista simplu inlantuita iar restul variabilelor alocate dinamic. Preluandu-ti ideea am facut asa si zic eu ca mai rapid e imposibil...

Cu o astfel de solutie obtii maxim 70p, deci cred ca intr-adevar trebuie programare dinamica!
Memorat
Florian
Nu mai tace
*****

Karma: 125
Deconectat Deconectat

Mesaje: 832



Vezi Profilul
« Răspunde #11 : Iunie 26, 2007, 20:49:20 »

Cod:
 Problema se poate rezolva si folosind prgramarea dinamica. 
Se construieste matricea Ai,j cu semnificatia suma tuturor produselor de j
 factori alesi din primele i numere. Recurenta se poate calcula usor Ai,j=Ai-1,j+Ai-1,j-1*Pi.
Probabilitatea ceruta va fi An,k impartita la Cn,k (combinari de n luate cate k).

Care ar trebui sa fie initializarea matricei A? Am initializat A[0,0] cu 1 si nu iese...

[ Gata! S-a rezolvat... ]
« Ultima modificare: Iunie 26, 2007, 22:00:29 de către Marcu Florian » Memorat
taloibogdan
Strain
*

Karma: 19
Deconectat Deconectat

Mesaje: 27



Vezi Profilul
« Răspunde #12 : Iulie 18, 2007, 11:48:30 »

O mica problema -> cand nu inchid fisierul de intrare imi da 2 de non-zero exit status, cand inchid fisierul de intrare imi da 7 de non-zero exit status
Raised eyebrow  Cry Care-i treaba?

[editat de moderator: cred ca in forma asta mesajul este mai lizibil]
« Ultima modificare: Iulie 19, 2007, 12:57:12 de către Taloi Bogdan Cristian » Memorat
devilkind
Echipa infoarena
Nu mai tace
*****

Karma: 284
Deconectat Deconectat

Mesaje: 1.240



Vezi Profilul
« Răspunde #13 : Iulie 18, 2007, 13:50:12 »

vezi ca nu prea cred ca ai scris corect acolo. Incearca sa postezi din nou, de data asta mai clar ce se intampla.
Memorat
taloibogdan
Strain
*

Karma: 19
Deconectat Deconectat

Mesaje: 27



Vezi Profilul
« Răspunde #14 : Iulie 19, 2007, 13:15:48 »

       Lucrez in Pascal;
       Am facut programul dar am uitat sa dau close(f)->f=fisierul de intrare; l-am trimis si am primit 2*raspuns corect , 3*raspuns gresit , 2*non-zero exit status si 3*time limit exceeded
       Mi-am dat seama de greseala si am inchis fisierul, apoi am trimis problema si am primit 7*non-zero exit status si 3*time limit exceeded. Question Question Eh?
« Ultima modificare: Iulie 19, 2007, 13:19:31 de către Taloi Bogdan Cristian » Memorat
Florian
Nu mai tace
*****

Karma: 125
Deconectat Deconectat

Mesaje: 832



Vezi Profilul
« Răspunde #15 : Iulie 19, 2007, 13:37:18 »

Deci...poate folosesti memorie nedeclarata [vectori declarati prea mici], sau poate ai gresit numele fisierelor!  Huh
Memorat
taloibogdan
Strain
*

Karma: 19
Deconectat Deconectat

Mesaje: 27



Vezi Profilul
« Răspunde #16 : Iulie 19, 2007, 15:06:40 »

 bomb NUP!!
Memorat
Darth_Niculus
De-al casei
***

Karma: -13
Deconectat Deconectat

Mesaje: 143



Vezi Profilul
« Răspunde #17 : Iulie 19, 2007, 21:24:41 »

  Folosesti vre-un halt() prin program?   (sau nush cum era exit() in Pascal)
Memorat
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #18 : Iulie 19, 2007, 22:07:24 »

Daca ne spui ca iei non-zero exit status nu inseamna prea mult, si ne este greu sa ne dam seama care ar putea fi problema (eventual o ghicim). Incearca sa explici pe scurt ce faci.
Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
DITzoneC
Nu mai tace
*****

Karma: 301
Deconectat Deconectat

Mesaje: 962



Vezi Profilul
« Răspunde #19 : Iulie 19, 2007, 23:58:27 »

Vezi ca non-zero exit status primesti si daca imparti la 0.
Memorat
taloibogdan
Strain
*

Karma: 19
Deconectat Deconectat

Mesaje: 27



Vezi Profilul
« Răspunde #20 : Iulie 20, 2007, 13:00:29 »

Nu folosesc exit,halt,break,etc.,etc. puke

Fac combinari de n luate cate k.Pentru fiecare combinare inmultesc rezultatele si le adun cum zice in problema.Formula nu are nimic. Baby

Nu impart nimic la 0. Variabila cu care impart e minim 1 Surrender
Memorat
DITzoneC
Nu mai tace
*****

Karma: 301
Deconectat Deconectat

Mesaje: 962



Vezi Profilul
« Răspunde #21 : Iulie 20, 2007, 13:15:00 »

Vezi sa nu iti dea un overflow pe la calculul combinarilor, in urma caruia sa ajungi sa imparti la 0.  Very Happy
Memorat
astronomy
Nu mai tace
*****

Karma: 204
Deconectat Deconectat

Mesaje: 492



Vezi Profilul
« Răspunde #22 : Iulie 20, 2007, 15:43:54 »

De ce nu postezi undeva codul sursa, poate asa cineva isi da seama ce gresesti  Shocked
Memorat
taloibogdan
Strain
*

Karma: 19
Deconectat Deconectat

Mesaje: 27



Vezi Profilul
« Răspunde #23 : Iulie 21, 2007, 10:53:57 »

Uite programul. Indifferent
Eu stiam ca nu e voie sa se posteze sursele. Shame on you
Cod:
Program dezastru;
Var f:text;
    i,k,n,p,nn,nk,kk:longint;
    s,pp:real;
    c:array[1..8000] of byte;
    a:array[1..8000] of real;
Begin
  assign(f,'dezastru.in');
  reset(f);
  readln(f,n,k);
  nn:=1;
  for i:=1 to n do begin nn:=nn*i; read(f,a[i]); end;
  nk:=1;
  for i:=1 to n-k do nk:=nk*i;
  s:=0.0;
  pp:=1.0;
  kk:=1;
  for i:=1 to k do begin kk:=kk*i; c[i]:=i; pp:=pp*a[c[i]]; end;
  s:=s+(pp/(nn div nk))*kk;
  if k<>n then
  repeat
   c[k]:=c[k]+1;
   if c[k]=n+1 then
     begin
      p:=k-1;
      while (p>0) and (c[p]=n-k+p) do p:=p-1;
      c[p]:=c[p]+1;
      for i:=p+1 to k do c[i]:=c[i-1]+1;
     end;
    pp:=1.0;
    for i:=1 to k do pp:=pp*a[c[i]];
    s:=s+(pp/(nn div nk))*kk;
  until(c[1]=n-k+1);
  close(f);
  assign(f,'dezastru.out');
  rewrite(f);
  Writeln(f,s:0:6);
  close(f);
End.
Memorat
pauldb
Nu mai tace
*****

Karma: 821
Deconectat Deconectat

Mesaje: 1.901



Vezi Profilul
« Răspunde #24 : Iulie 21, 2007, 11:10:42 »

Incearca sa folosesti extended in loc de real.
25! nu prea intra in longint.

Eu stiam ca nu e voie sa se posteze sursele. Shame on you

Nu prea e voie, dar nu ajungeam niciunde. Smile Si oricum sursa ta nu prea merge. Tongue

Si te rog nu mai folosi toate smileyurile pe care le ai la dispozitie pentru ca devii enervant.
« Ultima modificare: Iulie 21, 2007, 11:16:19 de către Paul-Dan Baltescu » Memorat

Am zis Mr. Green
Pagini: [1] 2   În sus
  Imprimă  
 
Schimbă forumul:  

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