一些介紹字串hash的文章:
字串雜湊函式
題目傳送:hdu - 4821 - string
13年長春現場賽的字串水題。。
不過沒有接觸過這類題,所以不會做。。
所謂字串hash,通常是把乙個字串對映為乙個整數。
我這裡採用的是bkdrhash函式。穩定性最好的乙個字串hash函式。
ac**:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define ll long long
#define inf 0x7fffffff
using
namespace
std;
#define ull unsigned long long
const
int maxn = 100005;
int m, l;
char s[maxn];
ull base[maxn];//base[i]存i個seed相乘的值
ull hash[maxn];//hash[i]存字尾i的hash值
ull seed = 31;//用於對映出去,為了減少衝突,通常取31,131等等這樣的質數
mapint> mp;//用於判重
int main()
int ans = 0;
for(int i = 0; i < l && i + m * l <= len; i ++)
if(mp.size() == m) ans ++;
for(int j = i + m * l; j + l <= len; j += l)
}printf("%d\n", ans);
}return
0;}
hash處理字串問題
include include include includeusing namespace std const int mod 1000000007 mod為計算hash值時的模數 const int p 10000019 p為計算hash值時的進製數 vectorans 字串hash long ...
Hash 字串 字串雜湊
luo gu luogu luogup 3370 p3370 p337 0如題,給定n個字串 第i個字串長度為mi,字串內包含數字 大小寫字母 請求出n個字串中共有多少個不同的字串。第一行包含乙個整數n,為字串的個數。接下來n行每行包含乙個字串,為所提供的字串。輸出包含一行,包含乙個整數,為不同的字...
白兔的字串 字串hash
原題 一道典型的字串hash,至於hash,這裡講的非常好。一開始用map函式一直超時,後來改用unordered map就過了,至於這2個map的區別,這裡講的挺清楚的。之後去查了一下其它方法,發現還有一種方法是手寫map函式 強 指明 大佬 unordered map是跑了600ms,重寫跑了1...