Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: Scandura  (Citit de 4483 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, 08:39:01 »

Aici se pot pune intrebari legate de problema Scandura de la Runda 1 a concursului Algoritmiada 2009.

Timpul alocat intrebarilor este de 1 ora. Intrebarile vor fi formulate astfel incat sa se poate raspunda cu DA sau NU. In caz contrar sau in cazul in care intrebarea isi gaseste raspuns in enuntul problemei, raspunsul va fi FARA COMENTARII.
Memorat

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

Karma: 173
Deconectat Deconectat

Mesaje: 217



Vezi Profilul
« Răspunde #1 : Decembrie 14, 2008, 09:13:14 »

Dimensiunile finale ale scandurilor sunt distincte doua cate doua ?
Memorat
bogdan2412
Echipa infoarena
Nu mai tace
*****

Karma: 410
Deconectat Deconectat

Mesaje: 951



Vezi Profilul
« Răspunde #2 : Decembrie 14, 2008, 09:15:12 »

Dimensiunile finale ale scandurilor sunt distincte doua cate doua ?
NU
Memorat
mihai0110
Strain


Karma: 6
Deconectat Deconectat

Mesaje: 20



Vezi Profilul
« Răspunde #3 : Decembrie 14, 2008, 09:17:29 »

in urma taierilor, pot ramane bucati in plus?
Memorat
bogdan2412
Echipa infoarena
Nu mai tace
*****

Karma: 410
Deconectat Deconectat

Mesaje: 951



Vezi Profilul
« Răspunde #4 : Decembrie 14, 2008, 09:19:41 »

in urma taierilor, pot ramane bucati in plus?

NU,
Citat
a cumparat o scandura de lungime L egala cu suma lungimilor tuturor scandurilor necesare.
Memorat
marcelcodrea
Nu mai tace
*****

Karma: 173
Deconectat Deconectat

Mesaje: 217



Vezi Profilul
« Răspunde #5 : Decembrie 14, 2008, 09:20:16 »

Cod:
Scandura de lungime 6 o taie apoi in 2 scanduri de lungme 3. (din exemplu)
Se pot efectua astfel de taieri tinand cont ca
Cod:
aceasta o taie in maxim M bucati diferite (din enunt)
Memorat
bogdan2412
Echipa infoarena
Nu mai tace
*****

Karma: 410
Deconectat Deconectat

Mesaje: 951



Vezi Profilul
« Răspunde #6 : Decembrie 14, 2008, 09:22:27 »

Lungimile in care se taie nu trebuie sa fie diferite (scuze ca nu se intelege bine din enunt)
Memorat
onoffrei
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 12



Vezi Profilul
« Răspunde #7 : Decembrie 14, 2008, 09:45:43 »

cine e M din fisierul de inrare?
toate scandurile au lungimea 10?
Memorat
bogdan2412
Echipa infoarena
Nu mai tace
*****

Karma: 410
Deconectat Deconectat

Mesaje: 951



Vezi Profilul
« Răspunde #8 : Decembrie 14, 2008, 09:48:55 »

cine e M din fisierul de inrare?

Citeste enuntul mai atent:
Citat
El are o masina speciala in care poate introduce o scandura de orice lungime si aceasta o taie in maxim M bucati.

toate scandurile au lungimea 10?

Citeste enuntul mai atent.
Memorat
mihai0110
Strain


Karma: 6
Deconectat Deconectat

Mesaje: 20



Vezi Profilul
« Răspunde #9 : Decembrie 14, 2008, 10:00:01 »

testul
4 3
1 2 3 4
are solutie?
Memorat
bogdan2412
Echipa infoarena
Nu mai tace
*****

Karma: 410
Deconectat Deconectat

Mesaje: 951



Vezi Profilul
« Răspunde #10 : Decembrie 14, 2008, 10:01:24 »

Are solutie. O scandura in taiata e maxim M bucati
Memorat
onoffrei
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 12



Vezi Profilul
« Răspunde #11 : Decembrie 14, 2008, 10:02:48 »

ms de raspuns , ai dreptate Smile,
sa inteleg ca masina poate taia o scandura si in mai mult de 2 bucati odata...
Memorat
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #12 : Decembrie 14, 2008, 10:04:52 »

Timpul alocat intrebarilor a expirat. Bafta in continuare!
Memorat

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


Karma: 0
Deconectat Deconectat

Mesaje: 12



Vezi Profilul
« Răspunde #13 : Decembrie 14, 2008, 13:11:33 »

poate cineva sa imi spune ce am gresit de nu a trecut nici un test?
codul este
Cod:
#include <fstream>
#include <stdio.h>

using namespace std;

int main() {
  ifstream fin("scandura.in");
  ofstream fout("scandura.out");
 
  int n, m, NrBucati=0,i=0;
  int * bucati;
  fin>>n;
  bucati=new int[n];
  fin>>m;
  m--;
  int LungTotala=0;
  while (!fin.eof())
  {
        NrBucati++;
        fin>>bucati[NrBucati];
        LungTotala = LungTotala + bucati[NrBucati];
  }
  int cost=0,chop=0,j;
  for (i=NrBucati;i>1;i=i-m)
  {
      cost=cost+LungTotala;
  if (m>1)
  {
chop = 0;
for (j=1;j<=m;j++)
{
chop=chop + bucati[(i - j)+1];
//printf("chop(%d)",chop);
}
  }
  else
  {
chop=bucati[i];
  }
      LungTotala=LungTotala-chop;
  //printf("cutt lt(%d)\n",LungTotala);
  }
  //printf("\ncost(%d)",cost);
  //system("pause");
  fout<<cost;
  return 0; 
}

Memorat
octav
Strain


Karma: 5
Deconectat Deconectat

Mesaje: 12



Vezi Profilul
« Răspunde #14 : Decembrie 14, 2008, 13:17:45 »

onofrei: ai facut o rezolvare Greedy. Incearca testul:
Cod:
4 2
1 1 1 1

Raspunsul cu algoritmul tau cred ca o sa fie 4 + 3 + 2 = 9, raspunsul corect e 4 + 2 + 2 = 8 (tai in jumatate bucata initiala si apoi fiecare bucata din nou in jumatate).

Intrebarea mea e de ce algoritmul la care m-am gandit si eu si mai multi se pare, pica jumatate din teste...
Memorat
bogdan2412
Echipa infoarena
Nu mai tace
*****

Karma: 410
Deconectat Deconectat

Mesaje: 951



Vezi Profilul
« Răspunde #15 : Decembrie 14, 2008, 13:20:10 »

Daca ai facut huffman si iei 35 incearca testul N=6 M=3 si 1 2 3 4 5 6. La primul pas nu trebuie sa alegi tot timpul M (se pot adauga cateva 0-uri pana cand obtii un arbore complet cu huffman). Probabil ca-ti da 42 si tb sa dea 34
« Ultima modificare: Decembrie 14, 2008, 13:40:35 de către Bogdan Tataroiu » Memorat
emy2704
Strain


Karma: -1
Deconectat Deconectat

Mesaje: 3



Vezi Profilul
« Răspunde #16 : Decembrie 14, 2008, 13:31:12 »

Programul asta ce are de nu merge?Neutral

Cod:
#include<stdio.h>
int main()
{
long l,lpart,efort=0,m,n,i,a,p[1000000],rest;
FILE *fin,*fout;
fin=fopen("scandura.in","r");
fscanf(fin,"%ld %ld",&n,&m);
for(i=1;i<=n;i++)
{
fscanf(fin,"%ld",&a);
efort+=a;
p[i]=a;
}
l=efort;
while(n!=1)
{
for(i=0;i<=m-2;i++)
lpart=l-p[n-i];
rest=p[n-m+2];
efort+=rest;
n=n-m+1;
}
fout=fopen("scandura.out","w");
fprintf(fout,"%ld",efort);
fclose(fin);
fclose(fout);
return 0;
}

Editat de admin: Foloseste tagul code cand postezi surse.
« Ultima modificare: Decembrie 14, 2008, 14:04:11 de către Andrei Grigorean » Memorat
onoffrei
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 12



Vezi Profilul
« Răspunde #17 : Decembrie 14, 2008, 13:34:31 »

ms pt raspuns,  Brick wall
cum pot vedea si alte rezolvari?
Memorat
octav
Strain


Karma: 5
Deconectat Deconectat

Mesaje: 12



Vezi Profilul
« Răspunde #18 : Decembrie 14, 2008, 13:36:24 »

Bogdan Tataroiu:
Da, ai dreptate. Pacat totusi ca au fost grupate ultimele teste (cele mari). Asa nu s-a facut diferenta intre cine a rezolvat problema incorect si cine a rezolvat-o incorect si ineficient Very Happy

Sandu Octav-Emilian:
e tot Greedy, citeste reply-ul meu precedent.
Memorat
onoffrei
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 12



Vezi Profilul
« Răspunde #19 : Decembrie 14, 2008, 13:52:34 »

Programul asta ce are de nu merge?Neutral
long l,lpart,efort=0,m,n,i,a,p[1000000],rest;
//p este prea mare nu cred ca ai atata memorie

for(i=0;i<=m-2;i++)
lpart=l-p[n-i];
rest=p[n-m+2];
//aici  se introduce un index negativ in interogarea vectorului
efort+=rest;
n=n-m+1;
}

Memorat
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #20 : Decembrie 14, 2008, 14:02:16 »

Pentru ca nu e bun. Asteapta pana se vor publica solutiile oficiale si te vei lamuri de ce rezolvarile pe care le postezi sunt proaste.
Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

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