傳送門
題目大意就是給你乙個字串,然後問你在這個字串裡有多少個長度為m∗l
m*lm∗
l 的子串,並且這連續的 m
mm 個長度為 l
ll 的子串還要相互不一樣。
直接h as
hhash
hash
,選取乙個起始位置(1−
l)
(1-l)
(1−l
),然後每 l
ll 個 has
hhash
hash
一下,然後類似與尺取,取 m
mm 個,看是否是 m
mm 個字元的has
hhash
hash
值都不同。
#include#define ull unsigned long long
using namespace std;
const int maxn = 1e5 + 10, base = 13331;
ull hash[maxn], p[maxn];
int m, l;
ull get_hash(int x)
maps;
int main()
int ans = 0;
for (int i = 1; i + m * l - 1 <= len && i <= l; i++)
}printf("%d\n", ans);
}return 0;
}
HDU4821 字串雜湊 尺取
給你乙個字串s,問你滿足下面兩個條件的子串有多少個?s長度不超過100000,1 leq m l leq s的長度。首先可以採用字串hash將字串處理便於儲存,字串hash我是在網上找的乙個方法,實際上是找乙個基數base,然後採用base進製,可以採用模乙個大質數,也可以是直接採用unsigned...
Hdu6586 String 字串字典序貪心
給出乙個只包含26個字元的字串 s 1e5 要求從中取出長度為k的字典序最小的組序列,滿足所給的26個字母的限制條件,例如 l i,r i 表示i字元的數量關係限制 1.對於構造字典序最小的序列,通常是一位一位構造的。2.首先題目有限制條件,所以我們考慮一下什麼條件時才滿足限制條件。我們從a開始取,...
String字元補充
一 string字串補充 對於string 獲取 length chatat indexof 有三種 lastdexof 判斷 contains isempty startwith endwith equals equalsignore 替換 replace 轉換 trim touppercase ...