字串 Hash 兔子與兔子

2022-06-13 04:51:13 字數 609 閱讀 9785

字串hash可以把乙個長度任意的字串對映成乙個非負整數,並且其衝突概率幾乎為0

取一固定值p,把字串看作p進製數,並分配乙個大於0的值,代表每種字元。一般來說,分配的數都遠小於p。例如 a = 1, b=2 , z=26

取乙個固定值m,求出該p進製對m的餘數,作為hash值。

一般來說,p取131或者13331,m取2^64,即直接用unsigned long long 儲存這個雜湊值。

h(s + c) = (h(s)*p + value[c]) %m 

乘p相當於左移運算。

h(t) = (h( s + t) - h(s) * p^(lengt) ) %m ,相當於將s補0到位數相同再相減來得到t

給出乙個字串 s , length(s) <= 1e6 .

有q個詢問,每個詢問給出兩個區間,問兩區間的字串是否相同。

思路:可以利用hash o1查詢

char

s[maxn];

unsigned

long

long

f[maxn], p[maxn];

intmain()

while (q--)

}

兔子與兔子(字串hash)

很久很久以前,森林裡住著一群兔子。有一天,兔子們想要研究自己的 dna 序列。我們首先選取乙個好長好長的 dna 序列 小兔子是外星生物,dna 序列可能包含 26 個小寫英文本母 然後我們每次選擇兩個區間,詢問如果用兩個區間裡的 dna 序列分別生產出來兩隻兔子,這兩個兔子是否一模一樣。注意兩個兔...

CH1401 兔子與兔子 字串 HASH

描述 很久很久以前,森林裡住著一群兔子。有一天,兔子們想要研究自己的 dna 序列。我們首先選取乙個好長好長的 dna 序列 小兔子是外星生物,dna 序列可能包含 26 個小寫英文本母 然後我們每次選擇兩個區間,詢問如果用兩個區間裡的 dna 序列分別生產出來兩隻兔子,這兩個兔子是否一模一樣。注意...

hash 兔子與兔子(C )

time limit 10 sec memory limit 128 mb submit 376 solved 75 submit status web board 很久很久以前,森林裡住著一群兔子。有一天,兔子們想要研究自己的dna序列。我們首先選取乙個好長好長的dna序列 小兔子是外星生物,dn...