題目描述
很久很久以前,森林裡住著一群兔子。
有一天,兔子們想要研究自己的 dna 序列。
我們首先選取乙個好長好長的 dna 序列(小兔子是外星生物,dna 序列可能包含 26 個小寫英文本母)。
然後我們每次選擇兩個區間,詢問如果用兩個區間裡的 dna 序列分別生產出來兩隻兔子,這兩個兔子是否一模一樣。
注意兩個兔子一模一樣只可能是他們的 dna 序列一模一樣。
輸入格式
第一行輸入乙個 dna 字串 s。
第二行乙個數字 m,表示 m 次詢問。
接下來 m 行,每行四個數字 l1,r1,l2,r2l1,r1,l2,r2,分別表示此次詢問的兩個區間,注意字串的位置從1開始編號。
輸出格式
對於每次詢問,輸出一行表示結果。
如果兩隻兔子完全相同輸出 yesyes,否則輸出 nono(注意大小寫)。
資料範圍
1≤length(s),m≤10000001≤length(s),m≤1000000
樣例輸入樣例:
aabbaabb
31 3 5 7
1 3 6 8
1 2 1 2
輸出樣例:
yesno
yes分析:
字串雜湊,維護雜湊字首和,實現線性查詢
#include#include#include#include#include#includeusing namespace std;
#define hash 131
#define ull unsigned long long
typedef pairpii;
const int n=1e6+7;
ull p[n],sum[n];
int n,m,len,l1,r1,l2,r2;
char s[n];
int main()
for(int i=1;i<=n;i++)
}
演算法 字串Hash
字串hash主要應用在 在長度為n的主串s中匹配長度為m的匹配串t,返回起始位置。通過字串hash函式把乙個任意長度的字串對映成乙個非負整數,並且其衝突概率為零。取一固定值p,把字串看作p進製數,並分配乙個大於0的數值,代表每種字元。一般來說,我們分配的數值都遠小於p。取一固定值m,求出p進製數對m...
字串 字串雜湊hash演算法
以洛谷p3370為引子引入吧 雜湊其實是所有字串操作中,筆者認為最簡單的操作了 except輸入輸出qwq 雜湊的過程,其實可以看作對乙個串的單向加密過程,並且需要保證所加的密不能高概率重複 就像不能讓隔壁老王輕易地用它家的鑰匙開啟你家門一樣qwq 通過這種方式來替代一些很費時間的操作。比如,最常見...
ELFHash字串Hash演算法
字串hash無論是在acm競賽中還是在工程中都有著廣泛的應用,所以很有必要掌握好它的用法。主要分為兩個部 分 hash對映和衝突處理。而本文主要來詳細講解hash對映的方法及應用,下篇文章將會介紹如何處理衝突。對於字串hash來說都是把字串對映為乙個整數,這一步是通過hash函式來進行的。常用的ha...