普通數字雜湊

2021-10-02 14:09:17 字數 1298 閱讀 1314

維護乙個集合,支援如下幾種操作:

「i x」,插入乙個數x;

「q x」,詢問數x是否在集合**現過;

現在要進行n次操作,對於每個詢問操作輸出對應的結果。

輸入格式

第一行包含整數n,表示運算元量。

接下來n行,每行包含乙個操作指令,操作指令為」i x」,」q x」中的一種。

輸出格式

對於每個詢問指令「q x」,輸出乙個詢問結果,如果x在集合**現過,則輸出「yes」,否則輸出「no」。

每個結果佔一行。

資料範圍

1≤n≤105

−109≤x≤109

1.拉鍊法

#include

#include

#include

#include

using

namespace std;

const

int n=

1e5+7;

//n最好取最大範圍最近的質數

int h[n]

,e[n]

,ne[n]

,index;

void

insert

(int x)

bool

query

(int x)

}return

false

;}

int

main()

else

else}}

return0;

}

2.定址法

#include

#include

#include

#include

using

namespace std;

const

int n=

2e5+

7,null=

1e9+

100;

//定址法一般陣列要開大兩到三倍的質數

int h[n]

;//將h陣列全部初始化為不在資料範圍的值

int

find

(int x)

}return k;

}

int

main()

else

else}}

return0;

}

一致性雜湊與普通雜湊對比

假如有cache主機5臺分別為cachea cacheb cachec cached cachee 當程式進行hash時,首先每個節點要根據自己的唯一引數雜湊出乙個值來 如根據ip進行雜湊 主機雜湊完成後形成的雜湊值如下 cachea 0 cacheb 1 cachec 2 cached 3 cac...

雜湊表 猜數字遊戲

299題猜數字 你寫下乙個數字讓你的朋友猜。每次他猜測後,你給他乙個提示,告訴他有多少位數字和確切位置都猜對了,用a表示,有多少位數字猜對了但是位置不對,用b表示。你的朋友將會根據提示繼續猜,直到猜出秘密數字。請注意秘密數字和朋友的猜測數都可能含有重複數字。示例 1 輸入 secret 1807 g...

雜湊雜湊雜湊雜湊

雜湊,是解決字串 實際上是各種類 問題的重要工具,講字串儲存讀取速度降低到了線性,雜湊的用法十分豐富,可以用了進行狀態壓縮等。include include include includeusing namespace std 這與jdk string.hashcode 的函式在足夠大的資料下失配率...