pipi發現不少字串是相似的,相似是指長度相同,且如果短字串中兩個位置的字元相同則在長字串的子串中的對應位置也相同,如果短字串中兩個位置的字元不同則在長字串的子串中的對應位置也不同,比如:abcc和xyzz就是相似的。現在pipi有乙個短字串s,乙個長字串a,他想知道在這個長字串中有幾個子串與短字串相似,不同位置的相同子串為不同。
這題挺巧妙的,5e6的資料範圍很容易超時,必須用o(n)的演算法。很自然的想到字串雜湊,關鍵就是編碼方法,怎樣凸顯位置的重要性。後來想到了不用原字串來雜湊,
用乙個類似next陣列的陣列來方法,這個陣列的每個元素等於前乙個同樣字母與當前字母的距離,沒有就是0,如abacba對應陣列為0 0 2 0 3 3。
#includeusingnamespace
std;
typedef unsigned
long
long
ull;
ull
base = 2333
;void pr(vectora)
intmain()
ull hs = 0, ht = 0
;
int i,m=s.size(),n=t.size(),ans=0
; vector
ns(m),nt(n),hou(n);
unordered_map
mp;vector
p(m,1
);
for(i=1;i1]*base
;
for(i=0;ii)
mp.clear();
for(i=0;ii)
mp.clear();
for(i=n-1;i>=0;--i)
//pr(ns);pr(nt);pr(hou);
for(i=0;ibase+ns[i];
for(i=0;ibase+nt[i];
if(hs==ht)++ans;
for(i=m;ii)
if(ht==hs)++ans;
}printf(
"%d\n
",ans);
return0;
}
PIPI的字串問題
pipi研究了多年字串後發現回文串是字串中最優雅的一種存在了。所以pipi發明了一種指標叫優雅度的指標來衡量乙個字串的優雅程度。優雅度定義如下 1.空串和非回文串的優雅度為0。2.乙個長度為len的回文串的優雅度為,其長度為len 2 向下取整 的字首和字尾的優雅度 1.例如串 baabbaab 的...
1346 PIPI的字串問題
第一行給出字串s。s 1e6.第二行給出詢問次數q,q 1e6.接下來每行給出字串t,t 1e6.題目保證所有詢問 t 之和 1e7.對於每個詢問,輸出乙個整數表示答案。abab 2abababab ababcbaba52 include using namespace std typedef un...
1345 PIPI的字串問題 (字串雜湊)
pipi雙來考查大家字串處理的能力啦。給定乙個字串s,以及q次詢問。每次詢問給出兩個正整數l,r,你需要回答s l r 是否為回文串。第一行給出字串s,s 1e6.保證字串僅由小寫字母構成。第二行給出詢問次數q,q 1e6.接下來每行給出兩個整數l,r,1 l,r s 對於每個詢問,若字串s中 l,...