Pagini: [1] 2   În jos
  Imprimă  
Ajutor Subiect: 110 Granita  (Citit de 9307 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
domino
Echipa infoarena
Nu mai tace
*****

Karma: 281
Deconectat Deconectat

Mesaje: 1.340



Vezi Profilul WWW
« : Septembrie 07, 2005, 00:31:06 »

Aici puteţi discuta despre problema Granita.
Memorat
MarcvsHdr
Strain
*

Karma: 1
Deconectat Deconectat

Mesaje: 44



Vezi Profilul
« Răspunde #1 : Martie 30, 2007, 19:16:16 »

Am rezolvat problema asta in O(N*logN) si iese din timp pe 7 teste. Am vzut ca a fost data la .campion 2003 si am cautat-o acolo. Solutia oficiala de acolo e tot O(N*logN)  Eh?.

DAR, limita de timp era acolo 0.2 sec. Intr-adevar, in 0.2 sec merge. E o greseala pe site cand s-a pus limita de 0.1? Daca nu, a rezolvat cineva si in O(N)??
Memorat
m_dersidan
Strain


Karma: 6
Deconectat Deconectat

Mesaje: 16



Vezi Profilul
« Răspunde #2 : Martie 30, 2007, 19:36:29 »

Rezolvarea este in O(N log N), pentru ca e nevioe de o sortare, si intra in timp.
Memorat
MarcvsHdr
Strain
*

Karma: 1
Deconectat Deconectat

Mesaje: 44



Vezi Profilul
« Răspunde #3 : Martie 30, 2007, 20:28:16 »

Am trimis DOAR citirea si sortarea, ca sa vad daca intra in timp, de curiozitate. Si nu intra nici macar citirea + sortarea. La sortare am folosit quick. Citirea o fac cu fscanf.

(later edit)
Gata, s-a rezolvat. Am inlocuit Quick Sort cu un Heap Sort. Se pare ca totusi exemplele erau bine alese ca sa nu intre Quick in timp. Wink
« Ultima modificare: Martie 30, 2007, 20:57:46 de către S A » Memorat
m_dersidan
Strain


Karma: 6
Deconectat Deconectat

Mesaje: 16



Vezi Profilul
« Răspunde #4 : Martie 31, 2007, 11:22:32 »

Intra si quick sort in timp, trebuia doar sa il faci random.
Memorat
crus
Strain
*

Karma: 3
Deconectat Deconectat

Mesaje: 44



Vezi Profilul
« Răspunde #5 : Martie 31, 2007, 12:08:53 »

daca nu intra quick...incearca merge...
Memorat
Florian
Nu mai tace
*****

Karma: 125
Deconectat Deconectat

Mesaje: 832



Vezi Profilul
« Răspunde #6 : Mai 01, 2007, 21:05:12 »

Ei bine...eu iau 80 de puncte cu bubble sort....Am trimis o sursa cu quicksort si luam 0, cu TLE pe toate...Este ciudat cum bubble este mai rapid ca quick..,.[ps: nu inteleg ce e ala quicksort random!  Think Poate ma poate ajuta cineva, k vreau sa invat si eu, va rog! ] 
Memorat
stef2n
Nu mai tace
*****

Karma: 218
Deconectat Deconectat

Mesaje: 641



Vezi Profilul
« Răspunde #7 : Mai 01, 2007, 22:49:00 »

La quicksort-ul normal, pentru un interval [A,B] afli pozitia pe care trebuie sa stea pivotul A astfel incat toate elementele din stanga sunt mai mici, iar toate elementele din dreapta sunt mai mari ca el. La quicksort-ul aleator, in loc de A folosesti ca pivot alt element din intervalul [A,B], pivot pe care il generezi random Thumb up
Memorat

Exista 10 categorii de oameni: cei care inteleg sistemul binar si cei care nu il inteleg.
CezarMocan
Nu mai tace
*****

Karma: 252
Deconectat Deconectat

Mesaje: 567



Vezi Profilul
« Răspunde #8 : Septembrie 07, 2007, 11:11:11 »

Sau se poate sa iti randomizezi un pic valorile inainte de sortare... eu asa am facut si am luat 100.
Memorat
cos_min
Nu mai tace
*****

Karma: 48
Deconectat Deconectat

Mesaje: 493


live


Vezi Profilul
« Răspunde #9 : Septembrie 07, 2007, 11:17:39 »

Cel mai usor ii cu un set  Whistle
Memorat

vid...
crus
Strain
*

Karma: 3
Deconectat Deconectat

Mesaje: 44



Vezi Profilul
« Răspunde #10 : Septembrie 07, 2007, 22:02:13 »

poate pe tipurile astea de teste...quiksort scoate un timp mai prost...aproape de N^2...incearca merge sort...ala sigur intra
Memorat
gabitzish1
Moderatori infoarena
Nu mai tace
*****

Karma: 321
Deconectat Deconectat

Mesaje: 926



Vezi Profilul
« Răspunde #11 : Septembrie 07, 2007, 23:23:47 »

merge si quicksort.. mie mi'a intrat la problema asta..cel mai mare timp a fost 40ms... deci e destul de bine.
« Ultima modificare: Septembrie 07, 2007, 23:26:02 de către Bitis Gabriel » Memorat
ciprianf
De-al casei
***

Karma: 11
Deconectat Deconectat

Mesaje: 104



Vezi Profilul
« Răspunde #12 : Februarie 19, 2008, 08:15:42 »

Salut...am vazut problemele alea cu qsort si asa ca m-am gandit sa va postez o sortare f f buna pe care eu o stiu sub numele de sheel( la aceasta probl cel mai mare timp a fost de 20 ms), fie v vectorul nostru care contine n numere, numerotate de la 1 la n:
Cod:
 
inj=n;
while(inj>1){
inj/=2;
do{
gata=1;
for(i=1;i<=n-inj;i++)
if(v[i]>v[i+inj]){
aux=v[i];
v[i]=v[i+inj];
v[i+inj]=aux;
gata=0;
}
}
while(!gata);
}
sper sa fie de folos cei care nu au facut inca problema
         
Memorat
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #13 : Februarie 19, 2008, 08:33:12 »

Algoritmul postat de tine (shell sort) este destul de ineficient pentru seturi mari de date, insa pentru un numar mai mic de elemente este unul din cei mai rapizi algoritmi cunoscuti. In plus, nu are nevoie de memorie suplimentara.
Memorat

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

Karma: 11
Deconectat Deconectat

Mesaje: 104



Vezi Profilul
« Răspunde #14 : Februarie 19, 2008, 08:41:02 »

Si cam de la cat incep "seturile mari de date?" si pt aceste seturi ce metoda folosesc? qsort?
Memorat
skyel
Nu mai tace
*****

Karma: 29
Deconectat Deconectat

Mesaje: 263



Vezi Profilul
« Răspunde #15 : Februarie 19, 2008, 13:50:59 »

Depinde foarte mult si de cum e aranjat sirul initial. Pentru ca exista seturi de date pe care shell sort poate ajunge O(N^2). Pentru mai multe info poti sa cauti pe wikipedia....cred
Memorat
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #16 : Februarie 19, 2008, 15:02:24 »

In general e bine sa folosesti quicksort pentru siruri mai mare de 100-200 de elemente. In C++ poti sa folosesti sort-ul din STL.
Memorat

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

Karma: 160
Deconectat Deconectat

Mesaje: 663



Vezi Profilul
« Răspunde #17 : Februarie 23, 2008, 14:17:19 »

In general e bine sa folosesti quicksort pentru siruri mai mare de 100-200 de elemente. In C++ poti sa folosesti sort-ul din STL.

cum faci sort pentru structuri? se poate face?
Memorat
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #18 : Februarie 23, 2008, 14:29:17 »

Da, dar trebuie sa iti faci propria functie de comparare.

Cod:

typedef struct Fractie {
   int a, b;
} Fractie;

inline int cmp(Fractie A, Fractie B) {
    return A.a * B.b < A.b * B.a;
}

int N;
Fractie V[MAXN];

int main() {
    Citeste(V, N);
    sort(V, V+N, cmp);
}


Am schitat codul pentru un program care citeste in vectorul V N fractii pe pozitiile 0... N-1 si le sorteaza crescator.
Memorat

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

Karma: 8
Deconectat Deconectat

Mesaje: 26



Vezi Profilul
« Răspunde #19 : Martie 08, 2010, 19:56:16 »

La problema asta se intampla ceva ciudat: am ok pe primele 3 teste si pe ultimul (care, judecand dupa memorie, e cel mai mare) si pe restul TLE. Cum pot sa ies din timp daca pe cel mai mare test imi intra, nu stiu. Am sortat structura cu mergesort si apoi am verificat cu :
Cod:
for(j=2;j<=n;j++)
{q=1;
while(q<j)
if(a[q].s>a[j].s) {c++; q=j;}
else q++;}
daca dispozitivul e redundant. Daca e un caz poate mai special va rog sa-mi dati un test sa ma prind si eu unde pica. Multumesc anticipat.
Memorat
Florian
Nu mai tace
*****

Karma: 125
Deconectat Deconectat

Mesaje: 832



Vezi Profilul
« Răspunde #20 : Martie 08, 2010, 21:13:04 »

Nu e bine cum verifici. Complexitatea ta e patratica. Trebuie un pic mai eficient. Incearca sa renunti la while-ul ala.  Smile
Memorat
andrei.finaru
Strain
*

Karma: 8
Deconectat Deconectat

Mesaje: 26



Vezi Profilul
« Răspunde #21 : Martie 09, 2010, 11:17:15 »

Mersi mult! Am luat suta:D:D:D Winner 1st place
Memorat
idomiralin
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 15



Vezi Profilul
« Răspunde #22 : Aprilie 13, 2010, 23:19:52 »

Eu am facut quicksort si iau numa 20
Cod:
Cod:
int quick(int st, int dr)
{
     int i,j,piv,aux,aux1;
     i = st; j = dr; piv = a[(st + dr) / 2];
     while (i <= j)
     {
           while (a[ i ] < piv) ++i;
           while (a[ j ] > piv) --j;
          
                 if (i <= j)
                 {
                 aux = a[ i ];  
                 a[ i ] = a[ j ];
                 a[ j ] = aux;
                 aux = b[ i ];
                 b[ i ] = b[ j ];
                 b[ j ] = aux;  
                
                 ++i;--j;}
  }
  if (st < j) quick(st,j);
  if (i < dr) quick(i,dr);
}
Ce as putea imbunatati la quicksortu asta?(daca ma poate ajuta cineva)

Editat de moderator: Foloseste tagurile [ code ] [ /code ] cand postezi cod.
« Ultima modificare: Aprilie 14, 2010, 07:55:42 de către Gabriel Bitis » Memorat
valentin.harsan
Strain
*

Karma: 33
Deconectat Deconectat

Mesaje: 41



Vezi Profilul
« Răspunde #23 : Iunie 21, 2011, 15:06:28 »

cred ca trebuia sa fie  Aj<=Ai si Bi<=Bj  nu  Aj<Ai si Bi<Bj
Memorat
Smaug-
Strain


Karma: 5
Deconectat Deconectat

Mesaje: 11



Vezi Profilul
« Răspunde #24 : Iulie 08, 2011, 15:15:55 »

Cat trebuie sa de pt:
Cod:
3
1 10
9 12
11 20
Cod:
3
1 11
9 12
11 20
« Ultima modificare: Iulie 08, 2011, 16:04:05 de către Andrei C. » Memorat
Pagini: [1] 2   În sus
  Imprimă  
 
Schimbă forumul:  

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