維護乙個集合,支援如下幾種操作:
「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 的函式在足夠大的資料下失配率...