字串hash問題

2021-07-05 18:21:09 字數 1208 閱讀 2835

一些介紹字串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...