Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: 775 Scandura  (Citit de 2935 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« : 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
Nu mai tace
*****

Karma: 49
Deconectat Deconectat

Mesaje: 203



Vezi Profilul
« Răspunde #1 : Decembrie 14, 2008, 15:21:48 »

De ce sursa asta i-a 0 pct?

Cod:
#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 Deconectat

Mesaje: 98



Vezi Profilul
« 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
Nu mai tace
*****

Karma: 49
Deconectat Deconectat

Mesaje: 203



Vezi Profilul
« 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
Moderatori infoarena
Nu mai tace
*****

Karma: 321
Deconectat Deconectat

Mesaje: 926



Vezi Profilul
« Răspunde #4 : Decembrie 14, 2008, 16:18:10 »

Pentru testul
Cod:
4 2
1 1 1 1

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
Vorbaret
****

Karma: 105
Deconectat Deconectat

Mesaje: 161



Vezi Profilul
« 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
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« 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
Nu mai tace
*****

Karma: 49
Deconectat Deconectat

Mesaje: 203



Vezi Profilul
« 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  Fighting
Memorat
Mishu91
Nu mai tace
*****

Karma: 169
Deconectat Deconectat

Mesaje: 751



Vezi Profilul
« Răspunde #8 : Februarie 13, 2009, 21:20:18 »

Vezi cat iti da pe testu
Cod:
8 4
1 1 2 2 2 3 3 3

Memorat
stocarul
Nu mai tace
*****

Karma: 49
Deconectat Deconectat

Mesaje: 203



Vezi Profilul
« Răspunde #9 : Februarie 13, 2009, 21:31:39 »

Imi da 34
Memorat
Mishu91
Nu mai tace
*****

Karma: 169
Deconectat Deconectat

Mesaje: 751



Vezi Profilul
« Răspunde #10 : Februarie 13, 2009, 21:32:38 »

27 tre sa dea Smile
Memorat
stocarul
Nu mai tace
*****

Karma: 49
Deconectat Deconectat

Mesaje: 203



Vezi Profilul
« Răspunde #11 : Februarie 13, 2009, 21:35:33 »

Imi poti explica te rog care sunt taieturile?
Memorat
Mishu91
Nu mai tace
*****

Karma: 169
Deconectat Deconectat

Mesaje: 751



Vezi Profilul
« 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   Thumb up
Memorat
stocarul
Nu mai tace
*****

Karma: 49
Deconectat Deconectat

Mesaje: 203



Vezi Profilul
« Răspunde #13 : Februarie 13, 2009, 23:25:17 »

Multumesc mult pentru raspunsuri...
Am observat ce greseam Wink)
Nu adaugam nodurile de cost 0.......
Memorat
ooctav
Strain


Karma: -1
Deconectat Deconectat

Mesaje: 15



Vezi Profilul
« Răspunde #14 : Ianuarie 15, 2011, 17:49:28 »

Imi poate zice cineva daca este un caz special pe testele 16 si 18 ?
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

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