Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: 042 Statistici de ordine  (Citit de 15621 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
Marius
Nu mai tace
*****

Karma: 154
Deconectat Deconectat

Mesaje: 572



Vezi Profilul
« : Decembrie 12, 2009, 14:47:42 »

Aici puteţi discuta despre problema Statistici de ordine.
« Ultima modificare: Decembrie 21, 2009, 12:09:22 de către Marius Stroe » Memorat

Faceti lucrurile simplu: pe cat de simplu posibil, dar nu mai simplu.
Bogdan_tmm
De-al casei
***

Karma: 4
Deconectat Deconectat

Mesaje: 122



Vezi Profilul
« Răspunde #1 : Decembrie 13, 2009, 00:46:26 »

Am 2 chesti neclare Neutral
1 se zicea ca citirea cu streamuri e mai lenta(cel putin aici nu-i adevarat)
2
Cod:
6	1364ms	16704kb	Time limit exceeded.	0	0
7 1352ms 16704kb Time limit exceeded. 0 0
8 1276ms 16700kb Time limit exceeded. 0 0
9 1296ms 16708kb Time limit exceeded. 0
10 1344ms 16708kb Time limit exceeded.
testele 8 si 9 au sub 1300 ms si totusi au tle ...
Memorat
DraStiK
Nu mai tace
*****

Karma: 131
Deconectat Deconectat

Mesaje: 207



Vezi Profilul
« Răspunde #2 : Decembrie 13, 2009, 12:05:07 »

Cod:
6	1364ms	16704kb	Time limit exceeded.	0	0
7 1352ms 16704kb Time limit exceeded. 0 0
8 1276ms 16700kb Time limit exceeded. 0 0
9 1296ms 16708kb Time limit exceeded. 0
10 1344ms 16708kb Time limit exceeded.
testele 8 si 9 au sub 1300 ms si totusi au tle ...

Timpii afisati sunt orientativi, nu sunt foarte precisi.  Very Happy
Memorat
Mishu91
Nu mai tace
*****

Karma: 169
Deconectat Deconectat

Mesaje: 751



Vezi Profilul
« Răspunde #3 : Decembrie 13, 2009, 13:49:56 »

Am 2 chesti neclare Neutral
1 se zicea ca citirea cu streamuri e mai lenta(cel putin aici nu-i adevarat)
Pe noile versiuni de compilatoare, citirea cu stream-uri este mai rapida decat cea standard. Smile
Memorat
Marius
Nu mai tace
*****

Karma: 154
Deconectat Deconectat

Mesaje: 572



Vezi Profilul
« Răspunde #4 : Decembrie 13, 2009, 14:40:48 »

Am 2 chesti neclare Neutral
1 se zicea ca citirea cu streamuri e mai lenta(cel putin aici nu-i adevarat)
Pe noile versiuni de compilatoare, citirea cu stream-uri este mai rapida decat cea standard. Smile

Totul e un hazard mai degrabă. La problema Huffman, citirea cu fscanf() e mai rapidă decât cea cu streamuri.
Memorat

Faceti lucrurile simplu: pe cat de simplu posibil, dar nu mai simplu.
Mishu91
Nu mai tace
*****

Karma: 169
Deconectat Deconectat

Mesaje: 751



Vezi Profilul
« Răspunde #5 : Decembrie 13, 2009, 18:48:43 »

Ai luat in calcul doar citirea, sau si afisarea? Pentru ca din ce am vazut afisarea standard este mai rapida.
Memorat
Bogdan_tmm
De-al casei
***

Karma: 4
Deconectat Deconectat

Mesaje: 122



Vezi Profilul
« Răspunde #6 : Decembrie 14, 2009, 16:25:08 »

Si citirea si afisarea le-am facut cu streamuri....
Memorat
05_Yohn
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 13



Vezi Profilul
« Răspunde #7 : August 26, 2010, 18:52:59 »

Am o nelamurire, algoritmul acela din Cormen cu O(n) pe cazul cel mai defavorabil l-a implementat careva, sau se poate implementa?
Eu am incercat ceva, dar mai mult de 10 n-am luat, probabil ca sigur busesc ceva.. va rog daca l-ati implementat trimiteti-mi si mie un pm cu link catre sursa. Multumesc anticipat!

PS: Random-Select pe fpc nu mi-a mers mai mult de 60 cu tot cu settextbuf  wink
Memorat
S7012MY
Nu mai tace
*****

Karma: 26
Deconectat Deconectat

Mesaje: 648



Vezi Profilul
« Răspunde #8 : August 26, 2010, 20:28:58 »

Am o nelamurire, algoritmul acela din Cormen cu O(n) pe cazul cel mai defavorabil l-a implementat careva, sau se poate implementa?
Eu am incercat ceva, dar mai mult de 10 n-am luat, probabil ca sigur busesc ceva.. va rog daca l-ati implementat trimiteti-mi si mie un pm cu link catre sursa. Multumesc anticipat!

PS: Random-Select pe fpc nu mi-a mers mai mult de 60 cu tot cu settextbuf  wink
eu am implementat si am luat 100
infoarena.ro/job_detail/450049?action=view-source
Memorat
05_Yohn
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 13



Vezi Profilul
« Răspunde #9 : August 26, 2010, 21:08:14 »

Din ce vad eu, tu ai implementat tot un random-select (alegi ca pivot un element aleator din partitia in care te afli, apoi faci ca la quicksort).. eu ma refer la algoritmul in care sortezi tot cate 5 elemente ca sa gasesti un pivot "bun" intotdeauna.
Uite aicihttp://zhuzeyuan.hp.infoseek.co.jp/ita/chap10.htm 10.3 Selection in worst-case linear time
Memorat
Mishu91
Nu mai tace
*****

Karma: 169
Deconectat Deconectat

Mesaje: 751



Vezi Profilul
« Răspunde #10 : August 27, 2010, 07:16:35 »

Am o nelamurire, algoritmul acela din Cormen cu O(n) pe cazul cel mai defavorabil l-a implementat careva, sau se poate implementa?
Eu am incercat ceva, dar mai mult de 10 n-am luat, probabil ca sigur busesc ceva.. va rog daca l-ati implementat trimiteti-mi si mie un pm cu link catre sursa. Multumesc anticipat!

PS: Random-Select pe fpc nu mi-a mers mai mult de 60 cu tot cu settextbuf  wink
Algoritmul acela este mai mult teoretic și destul de complicat, motiv pentru care doar am menționat existența lui la explicații. Când băgam problema, găsisem (nu mai știu exact unde) că și nth_element este implementat tot în stilul algoritmului cu pivot random.

Din păcate, volumul de date este foarte mare și probabil citirea consumă foarte mult timp(chiar și cu parsare). Mai treci la C++. Smile
Memorat
SpiderMan
Nu mai tace
*****

Karma: -463
Deconectat Deconectat

Mesaje: 937



Vezi Profilul
« Răspunde #11 : August 27, 2010, 15:01:25 »

@Oogway, se poate lua 100 in pascal cu timpi foarte buni ( look HERE ) . Am folosit SetTextBuff ( bufferul merge declarat orice, longint, byte, char, boolean, intra oricum ) si cu citire parsata. Am vazut ca char-ul ca si buffer merge mai repede si daca pui limita superioara o putere a lui 2 .
Memorat
05_Yohn
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 13



Vezi Profilul
« Răspunde #12 : August 27, 2010, 20:54:12 »

@SpiderMan - mersi mult

@Mishu91 - o sa trec in cele din urma la C++, ca nu se mai poate  Very Happy  Thumb up
Memorat
andreifirst
Strain
*

Karma: 4
Deconectat Deconectat

Mesaje: 26



Vezi Profilul
« Răspunde #13 : Aprilie 08, 2011, 10:35:03 »

Folosesc ideea de rezolvare prezentata la explicatie, dar nu reusesc nici cum sa iau 100 pct.

Aici sunt 2 surse ale mele cu punctaje de 70 cu implementari usor diferite de Qsort
http://infoarena.ro/job_detail/575373?action=view-source
http://infoarena.ro/job_detail/575301?action=view-source

M-am uitat putin prin surse si am vazut ca majoritatea celor scrise in C++ merg pe ideea mea, iar in FPC sunt doar 2 de 100 pct si au abordari ciudate.

Sunt curios, e vreo greseala in sursa mea sau pur si simplu a venit timpul sa trec in C++?
Multumesc anticipat!
Memorat
Mishu91
Nu mai tace
*****

Karma: 169
Deconectat Deconectat

Mesaje: 751



Vezi Profilul
« Răspunde #14 : Aprilie 08, 2011, 12:52:43 »

Din păcate, după ce am schimbat testele, se pare că este foarte greu să se ia 100 în Pascal.

Părerea mea este că ar fi mai bine să treci la C++, nu doar pentru a lua 100 la problema asta, Smile avantajele lui C++ faţă de Pascal au ai fost dezbătute în câteva topicuri.
Memorat
andreifirst
Strain
*

Karma: 4
Deconectat Deconectat

Mesaje: 26



Vezi Profilul
« Răspunde #15 : Aprilie 08, 2011, 15:46:27 »

okay, Mishu, ms. Cred ca nu este cel mai bun moment sa fac schimbarea acum, cu o saptamana inainte de nationala, deci o sa zic pas problemei asteia. Daca totusi se uita cineva de curiozitate in sursa si observa o neregula, astept cu tot dragul comentarii.

Edit: Am rezolvat. Se pare ca doar citirea din FPC era de vina. Am schimbat citirea normala cu citire string si transformare ulterioara in numar. Asta si fara sa schimb nimic mi-a scazut timpul de executie de la 1200 ms la 400 ms pe testul 7, deci de 3 ori mai repede. Multumesc pascalistilor pentru idee Very Happy
« Ultima modificare: Aprilie 11, 2011, 09:35:55 de către Cioara Andrei Ioan » Memorat
tzipleatud
De-al casei
***

Karma: 104
Deconectat Deconectat

Mesaje: 117



Vezi Profilul
« Răspunde #16 : August 20, 2011, 17:33:11 »

Salut! De ce sursa asta: http://infoarena.ro/job_detail/609325?action=view-source ia mai putin decat aceasta: http://infoarena.ro/job_detail/609324?action=view-source si de ce niciuna nu ia punctaj maxim? Multumesc anticipat!
Memorat
Magnus
Client obisnuit
**

Karma: 0
Deconectat Deconectat

Mesaje: 57



Vezi Profilul
« Răspunde #17 : August 20, 2011, 17:49:54 »

"rand" este o functie care returneaza o valoare aleatorie(ma rog, pseudo-aleatorie: http://www.cplusplus.com/reference/clibrary/cstdlib/rand/).
Deci este normal sa nu-ti returneze de fiecare data aceeasi valoare si prin urmare sa ai timpi de executie diferiti.
Memorat
dany123
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 17



Vezi Profilul
« Răspunde #18 : Ianuarie 17, 2012, 00:20:11 »

In functia sel:
Cod:
int q = part(li, lf);
int t = q-li+1;

Din cate imi dau seama q este statistica de ordine a elementului ales aleator, dar t ce este? nu-mi dau seama care-i logica, dar vad ca fara el nu merge.
Memorat
vlad.doru
Strain


Karma: 3
Deconectat Deconectat

Mesaje: 12



Vezi Profilul
« Răspunde #19 : Ianuarie 24, 2012, 09:45:52 »

Mai exista si o alta rezolvare de 100 de puncte la problema asta care se bazeaza pe o functie de partitionare in bucketuri si care ia 100 de puncte. Am implementat-o cu succes si timpul maxim este mai bun decat cel obtinut cu functia nth element din STL.
Memorat
Teodor94
Echipa infoarena
Nu mai tace
*****

Karma: 63
Deconectat Deconectat

Mesaje: 558



Vezi Profilul
« Răspunde #20 : Februarie 28, 2012, 11:51:55 »

am reusit sa iau tle pe testul 3, dintr-un motiv sau altul... desi pare a fi un test mic. folosind streamuri la citire iau 90 puncte cu tle pe testul 3. folosind stdio, iau tle pe testul 1 si 3..
http://infoarena.ro/job_detail/695302
Memorat
Mishu91
Nu mai tace
*****

Karma: 169
Deconectat Deconectat

Mesaje: 751



Vezi Profilul
« Răspunde #21 : Februarie 29, 2012, 00:40:41 »

In functia sel:
Cod:
int q = part(li, lf);
int t = q-li+1;

Din cate imi dau seama q este statistica de ordine a elementului ales aleator, dar t ce este? nu-mi dau seama care-i logica, dar vad ca fara el nu merge.

q este pozitia pivotului, iar t retine cate numere sunt mai mici decat pivotul in intervalul [li..lf]
Memorat
mihai995
Strain


Karma: 1
Deconectat Deconectat

Mesaje: 8



Vezi Profilul
« Răspunde #22 : Aprilie 29, 2012, 21:39:19 »

Ar trebui redus timpul ... am luat 100p cautand binar solutia, in O(30 N)
Memorat
https
Strain
*

Karma: 0
Deconectat Deconectat

Mesaje: 30



Vezi Profilul
« Răspunde #23 : Februarie 18, 2014, 20:30:27 »

Ma puteti ajuta va rog si pe mine? Nu imi dau seama de ce nu merge http://www.infoarena.ro/job_detail/1111373?action=view-source Multumesc
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

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