•wefgef
|
 |
« : Decembrie 14, 2008, 14:27:33 » |
|
Aici puteti discuta despre problema Scandura.
|
|
|
Memorat
|
omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
|
|
|
•stocarul
|
 |
« Răspunde #1 : Decembrie 14, 2008, 15:21:48 » |
|
De ce sursa asta i-a 0 pct? #include<stdio.h> #define infile "scandura.in" #define outfile "scandura.out" #define nmax 1000*1000+1 long v[nmax]; //vom salva toate lungimile de scandura ce trebuie obtinute (in ordine crescatoare) long n; //numarul de lungimi de scanduri long m; //numarul maxim de bucati ce se pot obtine dintr-o data long long l; //lungimea totala a scandurii
void citire(long v[nmax], long *n, long *m, long long *l) { long i; scanf("%ld %ld",n,m); for(i=1;i<=*n;i++) //luam fiecare lungime ce trebuie obtinuta { scanf("%ld",&v[i]); //citim lungimea *l+=v[i]; //adaugam la lungimea totala } }
long long calculeaza_efort(long v[nmax], long n, long m, long long l) { long i; long long e=0; //aici vom calcula efortul minim while(l>v[1]) //cat timp mai avem de taiat din scandura { e+=l; //adaugam costul operatiei, adica efortul for(i=1;i<m && n>0;i++,n--) //se rezolva m-1 bugati l-=v[n]; } return e; }
int main() { freopen(infile,"r",stdin); freopen(outfile,"w",stdout);
citire(v,&n,&m,&l); //citim datele si calculam lungimea totala a scandurii printf("%lld\n",calculeaza_efort(v,n,m,l));
fclose(stdin); fclose(stdout); return 0; }
|
|
|
Memorat
|
|
|
|
•Pepelea_Flaviu
Client obisnuit

Karma: 30
Deconectat
Mesaje: 98
|
 |
« Răspunde #2 : Decembrie 14, 2008, 15:58:46 » |
|
pt ca nu-i buna rezolvarea....de-aia
pt testul: 4 1 1 1 1 tie iti da 9....iar rezultatul corect e 8
|
|
|
Memorat
|
|
|
|
•stocarul
|
 |
« Răspunde #3 : Decembrie 14, 2008, 16:12:49 » |
|
pt ca nu-i buna rezolvarea....de-aia
pt testul: 4 1 1 1 1 tie iti da 9....iar rezultatul corect e 8
Daca te refereai pentru testul : 4 2 1 1 1 1 Se efectueaza o taiere cu costul de 4, si se obtin doua scanduri de lungime 1 si 3. Se efectueaza o taiere cu costul de 3, si se obtin doua scanduri de lungime 1 si 2. Se efectueaza o taiere cu costul de 2, si se obtin doua scanduri de lungime 1. deci se obtin 4 scanduri de lungime 1, cu costul 4+3+2=9. Am inteles cumva eu gresit enuntul?
|
|
|
Memorat
|
|
|
|
•gabitzish1
|
 |
« Răspunde #4 : Decembrie 14, 2008, 16:18:10 » |
|
Pentru testul Se face o taiere cu costul 4 si se obtin 2 scanduri de lungime 2 fiecare. Se taie fiecare scandura de lungime 2 (cost 2 * 2) si se obtin 4 scanduri de lungime 1. deci se obtin 4 scanduri de lungime 1 cu costul 4 + 2 + 2 = 8.
|
|
« Ultima modificare: Decembrie 14, 2008, 16:34:27 de către Bitis Gabriel »
|
Memorat
|
|
|
|
•crawler
|
 |
« Răspunde #5 : Decembrie 14, 2008, 23:42:27 » |
|
nu inteleg de ce nu imi merg testele 3 si 4 nici cu brut ... este vreo sansa sa se puna pe forum testul 3 sau 4 ?
|
|
|
Memorat
|
|
|
|
•wefgef
|
 |
« Răspunde #6 : Decembrie 15, 2008, 09:44:02 » |
|
Pai ce brut ai facut?
|
|
|
Memorat
|
omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
|
|
|
•stocarul
|
 |
« Răspunde #7 : Februarie 13, 2009, 21:13:57 » |
|
Am facut si eu o rezolvare cu Codul lui Huffman... Am o lista initiala (cu nodurile cu lungimile din fisierul de intrare) Si o lista in care adaug nodurile care se formeaza.... Cat timp in cele doua liste am mai mult de un nod.... - creez un nod nou - selectez k=max(m,numarul_nodurilor_din_liste) noduri. (nodurile se selecteaza ca un fel de interclasare.....adica se selecteaza intotdeauna minimul din capatul celor doua liste) - pentru fiecare din cele k noduri, adaug costul la nodul creeat nou - costul minim total primeste costul care s-a adaugat la noul nod - adaug nodul cel nou in lista a 2-a. Ce anume nu fac bine in acest algoritm?....primesc doar 35 pct 
|
|
|
Memorat
|
|
|
|
•Mishu91
|
 |
« Răspunde #8 : Februarie 13, 2009, 21:20:18 » |
|
|
|
|
Memorat
|
|
|
|
•stocarul
|
 |
« Răspunde #9 : Februarie 13, 2009, 21:31:39 » |
|
Imi da 34
|
|
|
Memorat
|
|
|
|
•Mishu91
|
 |
« Răspunde #10 : Februarie 13, 2009, 21:32:38 » |
|
27 tre sa dea 
|
|
|
Memorat
|
|
|
|
•stocarul
|
 |
« Răspunde #11 : Februarie 13, 2009, 21:35:33 » |
|
Imi poti explica te rog care sunt taieturile?
|
|
|
Memorat
|
|
|
|
•Mishu91
|
 |
« Răspunde #12 : Februarie 13, 2009, 21:44:20 » |
|
Pai la inceput am o scandura de lungime 17, pe care o tai in 3 de 3 si una de 8. Aia de 8 o tai in 4 de 2. Una de 2 o tai in 2 de 1. 2 + 8 + 17 = 27 
|
|
|
Memorat
|
|
|
|
•stocarul
|
 |
« Răspunde #13 : Februarie 13, 2009, 23:25:17 » |
|
Multumesc mult pentru raspunsuri... Am observat ce greseam  ) Nu adaugam nodurile de cost 0.......
|
|
|
Memorat
|
|
|
|
•ooctav
Strain
Karma: -1
Deconectat
Mesaje: 15
|
 |
« Răspunde #14 : Ianuarie 15, 2011, 17:49:28 » |
|
Imi poate zice cineva daca este un caz special pe testele 16 si 18 ?
|
|
|
Memorat
|
|
|
|
|