Witam,
Czy te zadanie można zrobić haszowaniem bo mi daje WA.
created
last reply
- 5
replies
- 595
views
- 2
users
- 2
links
Witam,
Czy te zadanie można zrobić haszowaniem bo mi daje WA.
Pewnie można i haszowaniem rozwiązać - ja jednak poszedłem jak elektron najmniejszą linią oporu czyli na łatwiznę i zwykła pętla porównująca wzorzec ze źródłem wystarczyła .
W funkcji pot_szybkie masz return w%q; -- a potem i tak jeszcze raz robisz
h = pot_szybkie(p, dl_a - 1, q) % q;
a *= a; tu tez powinno być dzielenie modulo
Dla takich danych :
1
26
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz
Program zwraca zły wynik .
Moim zdaniem to jest dziwne ci przeszła O(n*m)
a mi jeżeli sprawdzam jeszcze jak hasze są równe wzorce to mam TLE a jak nie to mam AC???
O co tu chodzi te rozwiazanie z jeszcze spr wzorca działa w najgorszym czasie O(n*m)
Wrzucam kod do obejrzenia
KOD10
Link jest chyba nieprawidłowy bo ideone pokazuje mi tylko pustą stronę . Wrzuć jeszcze raz na ideon.
Możliwe że któryś test jest bardzo długi np ma 2 miliony liter w teksie do wyszukania , a w twoim kodzie jest założenie że
char a[1000000], b[1000000]
wtedy albo utnie część danych albo wyrzuci błąd pamięci .
Dla danych :
1
0aaaaaa
Błędny wynik .
"Trzeci wiersz zawiera test T czyli ciąg liter alfabetu angielskiego zakończony znakiem nowego wiersza."
Zakładasz że dane wejściowe w drugim wierszu mają długość mniejszą od milion plus 1 .
Autor zadania pisze tylko że wiersz kończy się enterem .
char a[1000002],b[1000002];
scanf("%s",b);
Co jak wiersz będzie miał większą długość ??
Przy haszowaniu zawsze jest możliwość kolizji - więć gdy
if(hasz1==hasz2){
wtedy lepiej sprawdzić czy łańcuch znaków w tekście od pozycji n-tej jest równy wzorcowi - nie spowolni to algorytmu ( o ile kolizje są rzadkie ) a jest zawsze 100 procent pewności .
Czyli to co w kodzie jest zaznaczone jako komentarz lepiej pozostawić jako działający kod .
Topic | Category | Replies | Views | Activity |
---|---|---|---|---|
MBPROB01 - History version in plaintext pl.spoj.com | Zbiór zadań | 6 | 177 | Jul '24 |
FR_20_02 - Poszukiwacze skarbów - Błąd w testach? | Zbiór zadań | 1 | 99 | Apr 2 |
PP0504B - StringMerge - w języku C | Zbiór zadań | 5 | 207 | Jun '24 |
TFRACAL - Kalkulator ułamków | Zbiór zadań | 2 | 145 | Feb 1 |
TOPSORTL - Porządek leksykograficzny w grafie | Zbiór zadań | 3 | 149 | Jul '24 |