•Bogdan_tmm
|
 |
« Răspunde #25 : Iulie 01, 2010, 11:13:41 » |
|
Zici ca daca vectorul e gol si tu apelezi .size() iti da eroarea aia? Daca e gol .size()=0,nu-ti da eroare
|
|
|
Memorat
|
|
|
|
|
•AndrewTheGreat
Strain
Karma: 4
Deconectat
Mesaje: 15
|
 |
« Răspunde #27 : Februarie 06, 2011, 17:49:20 » |
|
f.getline(P,100)? eu aia am sesizat cand ti-am deschis sursa... In rest daca a luat puncte inseamna ca aia e toata greseala  .
|
|
|
Memorat
|
|
|
|
|
•memax
Strain
Karma: 0
Deconectat
Mesaje: 4
|
 |
« Răspunde #29 : Mai 19, 2012, 21:14:03 » |
|
Asa o intrebare la algoritmul Rabin-Karp din sursa oficiala, de ce hash1 si hash2 se iau modulo cu 2 numere diferite?
|
|
|
Memorat
|
|
|
|
•pauldb
|
 |
« Răspunde #30 : Mai 20, 2012, 09:21:53 » |
|
Pentru ca daca ai folosi acelasi modulo, nu ai miscora deloc probabilitatea unei coliziuni.
Daca intrebi de ce se folosesc uneori doua sau mai multe hash-uri, raspunsul e urmatorul: daca functia ta hash genereaza numere uniform in intervalul [0, M1), atunci ai probabilitate 1/M1 pentru o coliziune. Daca mai adaugi o alta functie hash independenta de prima care returneaza numere uniform in intervalul [0, M2), atunci probabilitatea unei coliziuni scade la 1/M1 * 1/M2. Poti sa vezi tehnica asta ca si cum ai creste intervalul in care returneaza functia hash valorile la [0, M1*M2), dar in acelasi timp eviti calculul pe numere mari.
|
|
|
Memorat
|
Am zis 
|
|
|
•memax
Strain
Karma: 0
Deconectat
Mesaje: 4
|
 |
« Răspunde #31 : Mai 20, 2012, 09:42:38 » |
|
Multumesc mult, am inteles 
|
|
|
Memorat
|
|
|
|
|
•Alexxino7
Strain
Karma: 4
Deconectat
Mesaje: 14
|
 |
« Răspunde #33 : Octombrie 07, 2012, 20:51:26 » |
|
Dupa ce am experimentat putin cu sursa ta, am observat ca desi pe compilatorul meu codul tau nu da nici o eroare, pe compilatorul infoarena apare ca eroare spatiul lasat in directiva #include<cstdio >. Ca sa nu-ti mai dea eroare pur si simplu nu mai lasi spatiul acela si scrii #include<cstdio>.
|
|
|
Memorat
|
|
|
|
•taigi100
Strain
Karma: -2
Deconectat
Mesaje: 19
|
 |
« Răspunde #34 : Octombrie 07, 2012, 21:11:43 » |
|
mda.... ms dar sincer e o eroare un pic cam ridicola
|
|
|
Memorat
|
|
|
|
•taigi100
Strain
Karma: -2
Deconectat
Mesaje: 19
|
 |
« Răspunde #35 : Octombrie 07, 2012, 21:21:37 » |
|
Bun... si de asemenea imi puteti da niste exemple pe care sursa mea nu functioneaza? ( nu vreau nici un motiv exact dc. nu functioneaza ci doar niste exemple ca sa ma chinui eu sa o rezolv ) http://infoarena.ro/job_detail/795262
|
|
|
Memorat
|
|
|
|
•Schumi
Client obisnuit

Karma: 36
Deconectat
Mesaje: 74
|
 |
« Răspunde #36 : Octombrie 08, 2012, 06:50:50 » |
|
Ai acces la atasamentele problemei. Intra la atasamente si descarca-ti testul pe care iti da incorect.
|
|
|
Memorat
|
|
|
|
•taigi100
Strain
Karma: -2
Deconectat
Mesaje: 19
|
 |
« Răspunde #37 : Octombrie 08, 2012, 14:09:43 » |
|
nu stiam asta ... multumesc 
|
|
|
Memorat
|
|
|
|
•taigi100
Strain
Karma: -2
Deconectat
Mesaje: 19
|
 |
« Răspunde #38 : Octombrie 08, 2012, 20:31:23 » |
|
ok dupa vreo 5 ore de incercari tot nu miam prea dat seama ca nu e bun ( e un pic cam greu cu testeke alea tinand cont ca is fooooarte lungi) nu am prea reusit sa fac nimic ... asa ca imi puteti da o mana de ajutor ? algoritmul e un boyer moore
|
|
|
Memorat
|
|
|
|
•Schumi
Client obisnuit

Karma: 36
Deconectat
Mesaje: 74
|
 |
« Răspunde #39 : Octombrie 08, 2012, 20:55:28 » |
|
Tu afisezi pe prima linie maxim 1000. In problema scrie ca trebuie sa afisezi pe prima linie numarul total de potriviri, iar pe a doua sa le afisezi doar pe primele 1000.
|
|
|
Memorat
|
|
|
|
•taigi100
Strain
Karma: -2
Deconectat
Mesaje: 19
|
 |
« Răspunde #40 : Octombrie 08, 2012, 22:55:52 » |
|
Ms, in afara de asta am observat ca la testul 6 imi sare peste un match ceea ce banui ca se intampla de la modul in care cresc i-ul am incercat sa il fac in mai multe feluri dar nu prea reusesc cum sa obtin peste 38 de pct ( scz ca pun atatea intrebari dar is cam nou  )
|
|
|
Memorat
|
|
|
|
•alex_unix
Strain
Karma: 22
Deconectat
Mesaje: 46
|
 |
« Răspunde #41 : Octombrie 11, 2012, 12:58:51 » |
|
Poti sa te uiti peste sursele exemplu care 100% sunt corecte. Si restul surselor sunt libere. Daca tot nu gasesti bug-ul, arunca o privire peste ele. 
|
|
|
Memorat
|
|
|
|
•VisuianMihai
|
 |
« Răspunde #42 : Decembrie 22, 2012, 20:03:54 » |
|
Am incercat sa rezolv problema prin Z-algorithm si iau 40 de puncte, nu inteleg ce nu e corect.
Later edit: am rezolvat. Nu am vazut ca trebuie afisate primele 1000 pentru testele mari.
|
|
« Ultima modificare: Decembrie 22, 2012, 20:22:11 de către Mihai Visuian »
|
Memorat
|
|
|
|
|
•taigi100
Strain
Karma: -2
Deconectat
Mesaje: 19
|
 |
« Răspunde #44 : Ianuarie 17, 2013, 19:03:36 » |
|
Aveti idee cum pot sa fac mai rapida implementarea la asta : http://infoarena.ro/job_detail/856786Fara sa folosesc un good sufix table ( vreau sa raman doar la un BMH nu la un BM)
|
|
|
Memorat
|
|
|
|
•Fayed
Client obisnuit

Karma: -24
Deconectat
Mesaje: 62
|
 |
« Răspunde #45 : Martie 03, 2013, 22:09:55 » |
|
Eu iau 60 de puncte pe problema cu TLE la 2 teste si fac direct cu strstr care este KMP deja optimizat din cate stiu eu. Care ar putea fi problema ? E mai rapid cu hashing ?
|
|
|
Memorat
|
|
|
|
•wefgef
|
 |
« Răspunde #46 : Martie 04, 2013, 14:20:58 » |
|
Functia strstr() are complexitatea O(N^2), nu este KMP.
|
|
|
Memorat
|
omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
|
|
|
•SebiSebi
|
 |
« Răspunde #47 : Martie 04, 2013, 14:29:08 » |
|
Oricum, este foarte surprinzator ca a luat 60 de puncte cu strstr(). 
|
|
|
Memorat
|
|
|
|
•Fayed
Client obisnuit

Karma: -24
Deconectat
Mesaje: 62
|
 |
« Răspunde #48 : Martie 04, 2013, 19:44:46 » |
|
Bine ca mi-ati spus ca e O(n^2). Acum stiu ca trebuie sa invat KMP.
|
|
|
Memorat
|
|
|
|
•Fayed
Client obisnuit

Karma: -24
Deconectat
Mesaje: 62
|
 |
« Răspunde #49 : Martie 08, 2013, 18:08:54 » |
|
Am facut KMP si am luat 100, insa vreau sa fac si Rabin Karp. Am inteles foarte bine cum se face teoretic insa ceva nu imi iese la implementare. Aveti vreo idee ? #include <cstdio> #include <cstring> #define NMAX 2000001 #define min(a,b) a<b ? a:b using namespace std;
char A[NMAX],B[NMAX]; int n,m,nr,a,b; int Sol[NMAX]; int t[NMAX];
inline unsigned long putere(int x,int k,int MOD){
if (k == 0) return 1; else if(k%2 == 0){ a = putere(x,k/2,MOD); return a*a%MOD; } else{ a = putere(x,k/2,MOD); b = a*a%MOD; return b*x % MOD; } }
inline int match(char *T, char *P,int j){
for(register int i=0;i<m;++i) if(T[i+j] != P[i]) return 0; return 1; }
inline void Rabin_Karp(char *T,char *M,int d,int MOD){
unsigned long h,P=0; n = strlen(T); m = strlen(M);
t[0] =0; h = putere(d,m-1,MOD); for(register int i=0;i<m;++i){ P = (d*P + M[i])% MOD; t[0] = (d*t[0] + T[i])%MOD; }
printf("%d\n",P); for(register int i=0;i<=n-m;++i){
printf("%d\n",t[i]); if(P == t[i]){ if(match(T,M,i)) Sol[++nr] = i; printf("%d\n",i); }
t[i+1] = (d*(t[i] - T[i+1]*h) + T[i+m+1])%MOD; } }
int main(){
freopen("strmatch.in","r",stdin); freopen("strmatch.out","w",stdout);
fgets(B,sizeof(B),stdin); fgets(A,sizeof(A),stdin);
Rabin_Karp(A,B,256,100003); printf("%d\n",nr); for(register int i=1;i<=min(nr,1000);++i) printf("%d ",Sol[i]);
return 0; }
Editat de admin: Foloseste tagul "code" atunci cand postezi surse.
|
|
« Ultima modificare: Martie 20, 2013, 16:22:12 de către Andrei Grigorean »
|
Memorat
|
|
|
|
|