CH1401 兔子與兔子

2022-08-03 02:33:13 字數 505 閱讀 3935

hash的入門題,通過hash我們可以在o(1)的時間裡判斷乙個字串的任意子串是否相等,恰好符合本題題意。

設計hash函式f[i]儲存字串s第1~i的子串的雜湊值。顯然存在f[i]=f[i-1]*131+(s[i]-'a'+1).

有了f陣列,就可以求出任意子串的雜湊值,因此我們就可以判斷任意子串是否相等。

若要求字串s的i~j的子串,即f[j]-f[i-1]*131j-i+1。我們再預處理出131的整數次冪即可。

1 #include 2 #include 3 #include 4

using

namespace

std;

5char s[1000010];6

int f[1000010],p[1000010];7

intm,n;

8int

main()

17while(m--)

23return0;

24 }

ac code

CH 1401兔子與兔子

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

CH 1401 兔子與兔子(字串雜湊)

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

CH1401 兔子與兔子 字串 HASH

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