ZOJ 3826 hash 字串模擬

2021-08-03 02:20:58 字數 957 閱讀 8012

給定一些結構體,結構體有value值和key值一一對應,value可用{}巢狀key和value對。q次詢問,輸出每個key值對應的value值。

用遞迴將key值對映成乙個hash值,這個思路個人覺得很像在p(=131)進製下把乙個字元當一位,乙個字串當乙個p進製的數,因為ascii碼範圍在128以內,所以明顯hash只不會產生衝突。

用map對映每個key的value起始終止位置,預處理完了查詢就很簡單了。

然後預處理出所有具體key值(巢狀的之間加 『.』 字元)的hash,map對映出hash的對應子串的左右座標。

再模擬請求輸出。

#include 

#include

#include

#include

using

namespace

std;

const

int maxn=500007;

char s[maxn],t[maxn];

int q,mv,cas;

typedef

unsigned

long

long ull;

mapint,int> > mp;

const ull p=131;

void pre (ull hash)')')

return ;

hash=tmp;

while (s[mv]!=':')

left=++mv;

if (s[mv]=='')

mv++;

mp[hash]=make_pair(left,mv);

// cout}

}void work ()

// coutprintf ("\n");

}else

printf("error!\n");

}}int main ()

}

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 通過這種方式來替代一些很費時間的操作。比如,最常見...