•DITzoneC
|
 |
« : Ianuarie 27, 2007, 18:18:48 » |
|
Aici puteţi discuta despre problema Secventa 5.
|
|
« Ultima modificare: Ianuarie 30, 2007, 20:52:03 de către Crestez Dan-Leonard »
|
Memorat
|
|
|
|
•bigsarpe
Strain
Karma: -5
Deconectat
Mesaje: 13
|
 |
« Răspunde #1 : Ianuarie 28, 2007, 15:02:03 » |
|
exista sursa de 100 in pascal?
|
|
|
Memorat
|
|
|
|
•devilkind
|
 |
« Răspunde #2 : Ianuarie 31, 2007, 18:49:57 » |
|
imi poate spune si mie cineva cat da pe testu 20 5 15 10 11 8 7 7 20 11 9 9 6 10 8 11 20 9 7 5 5 11 10 mie imi da 123 atat cu solutia in n^2 cat si cu solutia in o(n). Ciudat insa ca pe infoarena amandoua iau 0 puncte. Si toate testele care le-am dat eu au mers (alea care le-am putut testa pe foaie). PS: sper ca putem folosi map pe infoarena (chiar daca tre sa fac pana la urma hashingu de mana ca sa iau 100).
|
|
|
Memorat
|
|
|
|
•domino
|
 |
« Răspunde #3 : Ianuarie 31, 2007, 19:26:01 » |
|
Ai avut grija sa citesti numerele pe unsigned?
|
|
|
Memorat
|
|
|
|
•devilkind
|
 |
« Răspunde #4 : Ianuarie 31, 2007, 19:33:47 » |
|
|
|
|
Memorat
|
|
|
|
•filipb
|
 |
« Răspunde #5 : Ianuarie 31, 2007, 19:50:37 » |
|
Tipul long long e de 4 ori mai incet decat int, asa ca incearca cu unsigned.
|
|
|
Memorat
|
|
|
|
•devilkind
|
 |
« Răspunde #6 : Ianuarie 31, 2007, 19:56:22 » |
|
si cu unsigned long int (formatul la citire am inteles ca e %lu) iau tot 60. Sa vad ce se intampla dupa ce implementez hashingu la mana, ptr ca pe map complexitatea e tot N log N.
[later edit] : am luat 90 cu hashingu de mana. ce functie de hashing ati folosit ptr 100??
|
|
« Ultima modificare: Ianuarie 31, 2007, 21:40:12 de către Savin Tiberiu »
|
Memorat
|
|
|
|
•astronomy
|
 |
« Răspunde #7 : Ianuarie 31, 2007, 22:02:42 » |
|
Aloci static tabela de hash? Mie mi-a mers cu cheia in jur de 200.000. (Poti folosi pentru mai multa eficienta 2 tabele de hash)
|
|
|
Memorat
|
|
|
|
•devilkind
|
 |
« Răspunde #8 : Ianuarie 31, 2007, 22:06:14 » |
|
nu mai conteaza am luat 100 inlocuind instructiunea : for (i=1;i<=n;i++) v[i]=0;
cu si a intrat de 100. Hashingu il aloc dinamic si folosesc constanta 666013 (am eu o placere ptr numaru asta  ) Multumesc tuturor ptr ajutor.
|
|
|
Memorat
|
|
|
|
•Tabara
|
 |
« Răspunde #9 : Ianuarie 31, 2007, 22:55:11 » |
|
constanta 666013 (am eu o placere ptr numaru asta  ) Iti mai spun eu vreo 10 oameni care au pasiune pentru numarul asta 
|
|
|
Memorat
|
|
|
|
•mocke
Strain
Karma: 0
Deconectat
Mesaje: 19
|
 |
« Răspunde #10 : Februarie 03, 2007, 01:04:55 » |
|
am o nelamurire: de ce merge mai repede scanf("%s", s) decat scanf("%d", &d) ?? pt trecerea de la 80 (in caz ca faci hash iar ultimele 2 teste iau cam ~1.530 ms) la 100 am parsat citirea dar nu am folosit gets() pt ca luam WA pe ult 2 teste (nush de ce??  ) si am folosit scanf("%s", s) , iar spre uimirea mea a intrat in timp! ceva opinii?
|
|
« Ultima modificare: Februarie 03, 2007, 01:07:51 de către Barca Cristian Mihai »
|
Memorat
|
oricine greseste...nu oricine invatza
|
|
|
•devilkind
|
 |
« Răspunde #11 : Februarie 04, 2007, 13:49:01 » |
|
la problema asta citirea dureaza 1.3-1.4 secunde  . Ptr ca un algoritm de complexitate o(n) ptr n - 1 milion merge cam in 0.1 hai sa zicem 0.2. dar tot mi se pare cam mult 1.3 ptr a citi 1 milion de numere :-/
|
|
|
Memorat
|
|
|
|
•wefgef
|
 |
« Răspunde #12 : Februarie 04, 2007, 16:58:36 » |
|
cum anume citesti?
|
|
|
Memorat
|
omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
|
|
|
•devilkind
|
 |
« Răspunde #13 : Februarie 04, 2007, 17:35:11 » |
|
scanf/printf dar oricum limita de timp e de 1.5 secunde si din cate am vazut in monitorul de evaluare nu sunt singurul care s-a chinuit sa incadreze 1 milion de operatii in acest timp.
|
|
|
Memorat
|
|
|
|
•wefgef
|
 |
« Răspunde #14 : Februarie 04, 2007, 19:26:46 » |
|
Incearca sa parsezi citirea, s-ar putea sa mearga mai bine.
|
|
|
Memorat
|
omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
|
|
|
•devilkind
|
 |
« Răspunde #15 : Februarie 04, 2007, 22:44:28 » |
|
am incercat sa citesc cu fgets dar luam WA pe niste teste nu inteleg de ce. Ce intelegi prin parsarea citirii - citirea linie cu linie?? dak asta e atunci diferenta nu cred ca e asa mare ptr ca numerele sunt date cate unul pe linie. deci tre sa citesti 1 milion de stringuri si tot cam pe acolo iesi cred. sper sa nu ma insel
|
|
|
Memorat
|
|
|
|
•astronomy
|
 |
« Răspunde #16 : Februarie 05, 2007, 12:07:48 » |
|
Se simte diferenta chiar daca citesti linie cu linie folosind fgets.
|
|
|
Memorat
|
|
|
|
•Marius
|
 |
« Răspunde #17 : Februarie 05, 2007, 12:24:18 » |
|
Sau citesti totul intr-un sir de caractere si extragi datele din sir. Merge simtitor mai repede pe site-uri ca www.spoj.pl dar nu si pe infoarena. La secv5 am castigat 0.3 s cu parsarea asta.
|
|
|
Memorat
|
Faceti lucrurile simplu: pe cat de simplu posibil, dar nu mai simplu.
|
|
|
•bogdan2412
|
 |
« Răspunde #18 : Februarie 05, 2007, 12:48:01 » |
|
0.3 s e foarte mult de fapt. Probleme gen color nu prea se pot face fara parsarea citirii. La asta se poate lua 100 puncte cu putin noroc fara sa parsezi citirea..
|
|
|
Memorat
|
|
|
|
•an_drey_curent
Strain
Karma: 4
Deconectat
Mesaje: 24
|
 |
« Răspunde #19 : Ianuarie 31, 2012, 20:41:01 » |
|
Imi poate da cineva o indicatie pentru 100 la problema aceasta? Iau 70.
Determin numarul de secvente care au cel mult U,respectiv L-1 elemente distincte. Folosesc un hash de pairs in care memorez numarul,respectiv numarul lui de aparitii in secventa actuala. Actualizez de fiecare data cand modific secventa numarul de aparitii. Parsez citirea... ce as mai putea face?
|
|
|
Memorat
|
|
|
|
•pauldb
|
 |
« Răspunde #20 : Ianuarie 31, 2012, 21:04:54 » |
|
Am facut accesul la sursele de la problema asta liber. Si pe mine m-a frustrat o gramada si am luat 100 abia dupa ce am intrat in echipa si m-am uitat la altii cum optimizeaza. Presupun ca e ceva de invatat aici... 
|
|
|
Memorat
|
Am zis 
|
|
|
•an_drey_curent
Strain
Karma: 4
Deconectat
Mesaje: 24
|
 |
« Răspunde #21 : Februarie 01, 2012, 09:39:33 » |
|
|
|
|
Memorat
|
|
|
|
•scipianus
|
 |
« Răspunde #22 : Septembrie 24, 2012, 11:44:31 » |
|
Am trimis destul de multe surse ( http://infoarena.ro/monitor?task=secv5&user=scipianus) cu mai toate optimizarile la care m-am putut gandi (ba cu normalizare cu sortare,ba cu hash,ba cu map) si mereu ia cel mult 80pct cu TLE. Ce mai pot optimiza? Vad ca ultima sursa de 100pct e prin august deci ar trebui ca inca sa se mai poata lua 100pct pe limita actuala,desi n-ar strica sa fie marita putin...
|
|
|
Memorat
|
|
|
|
•pauldb
|
 |
« Răspunde #23 : Septembrie 24, 2012, 17:56:07 » |
|
Am crescut limita de timp pentru ca sursa mea de 100 nu intra in timp.
Ca sa iau o 100 de puncte eu am folosit un hash de mana mai dubios. Am adaugat de la inceput toate elementele in hash si apoi cresteam/decrementam nr. de aparitii fara sa mai fac operatii de inserare sau stergere.
|
|
|
Memorat
|
Am zis 
|
|
|
•claudiumihail
Strain
Karma: 5
Deconectat
Mesaje: 33
|
 |
« Răspunde #24 : Aprilie 28, 2013, 03:31:36 » |
|
Salut,
La problema asta am trimis la surse de mi s-a acrit, cu toate optimziarile la care m-am putut gandi:
- Algoritm O(n) (varianta cu determinat subsecventele de lungime L-1 si U) - bifat - Citire parsata - bifat - Hash de mana care e vizibil mult mai bun decat unoprdered_map/hash_map etc - bifat (desi sunt gata sa accept ca aici e posibil sa fie buba)
Recunosc ca deja a devenit extrem de frustranta problema asta. Am vazut ca multa lume s-a tot chinuit sa treaca de 80pct. Am vazut de asemenea ca s-a mentionat ca accesul la surse era la un moment dat liber. Daca nu mai e cazul, e dispus cineva sa-mi dea un hint despre cum se poate face problema asta de 100? Chiar am ajuns intr-un punct mort si as fi extrem de recunoscator pentru putin ajutor.
Claudiu
|
|
|
Memorat
|
|
|
|
|