hash 兔子與兔子(C )

2021-10-03 09:44:50 字數 1377 閱讀 7889

time limit: 10 sec memory limit: 128 mb

submit: 376 solved: 75

[submit][status][web board]

很久很久以前,森林裡住著一群兔子。

有一天,兔子們想要研究自己的dna序列。

我們首先選取乙個好長好長的dna序列(小兔子是外星生物,dna序列可能包含26個小寫英文本母)。

然後我們每次選擇兩個區間,詢問如果用兩個區間裡的dna序列分別生產出來兩隻兔子,這兩個兔子是否一模一樣。

注意兩個兔子一模一樣只可能是他們的dna序列一模一樣。

第一行輸入乙個dna字串s。

第二行乙個數字m,表示m次詢問。

接下來m行,每行四個數字l1,r1,l2,r2,分別表示此次詢問的兩個區間,注意字串的位置從1開始編號。

資料範圍

1≤length(s),m≤1000000

對於每次詢問,輸出一行表示結果。

如果兩隻兔子完全相同輸出yes,否則輸出no(注意大小寫)。

aabbaabb

31 3 5 7

1 3 6 8

1 2 1 2

yes

noyes

[submit][status]

雙hash+快讀,雙hash是預防精心構造的資料的。

**:

#include

using

namespace std;

int mod1=

998244

,base1=

233,n,t,ll=1;

char s[

1000001];

int mod2=

666623

,base2=

431;

long

long h2[

1000001

],p2[

1000001

],h1[

1000001

],p1[

1000001];

void

read

(int

&x)void

build1()

bool

check1

(int l1,

int r1,

int l2,

int r2)

void

build2()

bool

check2

(int l1,

int r1,

int l2,

int r2)

intmain()

return0;

}

兔子與兔子(字串hash)

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

字串 Hash 兔子與兔子

字串hash可以把乙個長度任意的字串對映成乙個非負整數,並且其衝突概率幾乎為0 取一固定值p,把字串看作p進製數,並分配乙個大於0的值,代表每種字元。一般來說,分配的數都遠小於p。例如 a 1,b 2 z 26 取乙個固定值m,求出該p進製對m的餘數,作為hash值。一般來說,p取131或者1333...

Acwing 138 兔子與兔子 Hash字串

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