字串雜湊 牛客白兔的字串

2021-10-05 10:08:15 字數 1206 閱讀 4173

時間限制:c/c++ 1秒,其他語言2秒

空間限制:c/c++ 262144k,其他語言524288k

64bit io format: %lld

題目描述

abab

2abababab

ababcbaba

**```

輸出:*

*```cpp

52

**:

#include

using

namespace std;

typedef

unsigned

long

long ull;

const ull maxn =

2e6+7;

char a[maxn]

,b[maxn]

;ull base[maxn]

,seed=

13131313

,hash[maxn]

;int ans;

void

init()

//獲得下標為i時的seed的i次方

void

rhash

(char

*str)

//例如1234 = 1*1000+2*100+3*10+4

ull gethash

(int l,

int r)

//234=1234-1000= 1*1000+2*100+3*10+4 - 1*1000

const

int m=

3e6+7;

int head[m]

,nex[m]

,cnt;

ull v[m]

;void

insert

(ull x)

//存入

bool

find

(ull x)

return

false;}

//查詢

intmain()

int n;

scanf

("%d"

,&n)

;while

(n--)

cout<}}

補充:

set中查詢也是跟這個同級別的,非常高效,可以用這個代替**中的雜湊表

牛客 D白兔的字串

白兔有乙個字串t。白雲有若干個字串s1,s2 sn。白兔想知道,對於白雲的每乙個字串,它有多少個子串是和t迴圈同構的。所有字元都是小寫英文本母 第一行乙個字串t t 10 6 第二行乙個正整數n n 1000 接下來n行為s1 sn s1 s2 sn 107 max s1 s2 s3 s4 sn 1...

白兔的字串 字串hash

原題 一道典型的字串hash,至於hash,這裡講的非常好。一開始用map函式一直超時,後來改用unordered map就過了,至於這2個map的區別,這裡講的挺清楚的。之後去查了一下其它方法,發現還有一種方法是手寫map函式 強 指明 大佬 unordered map是跑了600ms,重寫跑了1...

白兔的字串

時間限制 c c 1秒,其他語言2秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld白兔有乙個字串t。白雲有若干個字串s1,s2 sn。白兔想知道,對於白雲的每乙個字串,它有多少個子串是和t迴圈同構的。所有字元都是小寫英文本母 輸入描述 第一行乙個字...