字串HASH模板

2021-09-07 05:03:58 字數 1502 閱讀 1008

//

注意maxn是最大不同的hash個數,一般hashn是maxn的兩倍左右,maxlen表示字串的最大長度

//k表示正確率,越大正確率越高,當時也越費空間,費時間。

//使用前注意初始化hash_init();

//用法參考下面注釋程式。

//hashnode裡面可以儲存很多資訊,注意靈活使用。 記憶體如果可能溢位可修改使得記憶體減一半,但是注意乘法溢位。

#define hashn 1000007

#define maxn 500000

#define maxlen 500500

#define k 2typedef unsigned

long

long

ull;

typedef unsigned

intui;

struct

hashnode

hashnode[maxn];

const ull mod[3]=;

const ull seed[3]=;

inthashpre[ hashn ],hashcnt;

void

hash_init()

bool

hash_find(ull key[k])

}if(nsign==0) return

true

; }

return

false;}

void

hash_insert(ull key[k])

void hash_getkey(char *str,int

len,ull key[k])

}return;}

void hash_insert(char *str,int

len)

bool hash_find(char *str,int

len)

void hash_getpow(int

len,ull hashpow[maxlen])

}}void hash_getsuffix(char *str,int

len,ull hashsuf[maxlen])

hashsuf[i][len]=0

;

for(int j=len-1;j>=0;j--)

}}void hash_getprefix(char *str,int

len,ull hashpref[maxlen])

}}/*

char str[1001000];

ull hashpow[k][maxlen],hashpref[k][maxlen],hashsuf[k][maxlen];

int main()

if( hash_find(key) )

}if(flag) break;

}if(flag) printf("yes\n");

else printf("no\n");

}return 0;

}*/

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...

字串 字串雜湊hash演算法

以洛谷p3370為引子引入吧 雜湊其實是所有字串操作中,筆者認為最簡單的操作了 except輸入輸出qwq 雜湊的過程,其實可以看作對乙個串的單向加密過程,並且需要保證所加的密不能高概率重複 就像不能讓隔壁老王輕易地用它家的鑰匙開啟你家門一樣qwq 通過這種方式來替代一些很費時間的操作。比如,最常見...