•Marius
|
 |
« : 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
|
 |
« Răspunde #1 : Decembrie 13, 2009, 00:46:26 » |
|
Am 2 chesti neclare  1 se zicea ca citirea cu streamuri e mai lenta(cel putin aici nu-i adevarat) 2 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
|
 |
« Răspunde #2 : Decembrie 13, 2009, 12:05:07 » |
|
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. 
|
|
|
Memorat
|
|
|
|
•Mishu91
|
 |
« Răspunde #3 : Decembrie 13, 2009, 13:49:56 » |
|
Am 2 chesti neclare  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. 
|
|
|
Memorat
|
|
|
|
•Marius
|
 |
« Răspunde #4 : Decembrie 13, 2009, 14:40:48 » |
|
Am 2 chesti neclare  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.  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
|
 |
« 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
|
 |
« 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
Mesaje: 13
|
 |
« 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 
|
|
|
Memorat
|
|
|
|
•S7012MY
|
 |
« 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  eu am implementat si am luat 100 infoarena.ro/job_detail/450049?action=view-source
|
|
|
Memorat
|
|
|
|
•05_Yohn
Strain
Karma: 0
Deconectat
Mesaje: 13
|
 |
« 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 aici http://zhuzeyuan.hp.infoseek.co.jp/ita/chap10.htm 10.3 Selection in worst-case linear time
|
|
|
Memorat
|
|
|
|
•Mishu91
|
 |
« 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  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++. 
|
|
|
Memorat
|
|
|
|
•SpiderMan
|
 |
« 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
Mesaje: 13
|
 |
« 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
|
|
|
Memorat
|
|
|
|
•andreifirst
Strain
Karma: 4
Deconectat
Mesaje: 26
|
 |
« 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-sourcehttp://infoarena.ro/job_detail/575301?action=view-sourceM-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
|
 |
« 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,  avantajele lui C++ faţă de Pascal au ai fost dezbătute în câteva topicuri.
|
|
|
Memorat
|
|
|
|
•andreifirst
Strain
Karma: 4
Deconectat
Mesaje: 26
|
 |
« 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 
|
|
« Ultima modificare: Aprilie 11, 2011, 09:35:55 de către Cioara Andrei Ioan »
|
Memorat
|
|
|
|
|
•Magnus
Client obisnuit

Karma: 0
Deconectat
Mesaje: 57
|
 |
« 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
Mesaje: 17
|
 |
« Răspunde #18 : Ianuarie 17, 2012, 00:20:11 » |
|
In functia sel: 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
Mesaje: 12
|
 |
« 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
|
 |
« 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
|
 |
« Răspunde #21 : Februarie 29, 2012, 00:40:41 » |
|
In functia sel: 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
Mesaje: 8
|
 |
« Răspunde #22 : Aprilie 29, 2012, 21:39:19 » |
|
Ar trebui redus timpul ... am luat 100p cautand binar solutia, in O(30 N)
|
|
|
Memorat
|
|
|
|
|
|