雜湊演算法 填坑法

2021-10-20 19:52:05 字數 1026 閱讀 4430

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

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

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

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

輸入格式

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

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

輸出格式

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

每個結果佔一行。

資料範圍

1≤n≤105

−109≤x≤109

輸入樣例:

5i 1

i 2i 3

q 2q 5

輸出樣例:

yesno

#include

using namespace std;

const

int n=

1e5+30;

//離散化

int a[n]

;int n;

string t;

const

int flag=

1e9+50;

//這個在uscao那個奶牛那道題也可以用到這個思路

//那道題是將所有點的隕石降落時間初始化為乙個大於上限的值然後取min,

intfind

(int x)

}return k;

//要麼是可以填坑的位置or 已經是x的位置

}int x;

intmain()

while

(n--

)else

else}}

return0;

}

update:

剛才回寢室路上又想到了一種情況,就是發生衝突的情況,如果兩個不同的值取mod對映到同乙個下標上,這個演算法的成立性與否,but想了一會,這個演算法依然是對的,就是即便對映到同乙個下標上,我們在找到下乙個被flag標記過的坑之前,我們依然會遍歷搜一遍,一定能找到。

填坑法 快速搞定快速排序演算法

該方法的基本思想是 1 先從數列中取出乙個數作為基準數。2 分割槽過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊。3 再對左右區間重複第二步,直到各區間只有乙個數。以乙個陣列作為示例,取區間第乙個數為基準數。我先上個圖讓大家感受一下,畫了很長時間,但是畫的還是很差,將就下看看吧...

MySQL坑與填坑

錯誤 1064 錯誤 1215 原因 資料型別不同 錯誤 1630 去掉函式名和 間的空格 check 關鍵字無效 使用列舉或觸發器 特定字串約束 使用列舉 課程性質 char 10 constraint c5 check 課程性質in 公共基礎 專業基礎 專業選修 任意選修 課程性質 enum 公...

演算法 模擬雜湊表(雜湊拉鍊法,開放選址法)

用陣列h n 來表示拉鍊法上對應的鏈,如果遇到衝突則在對應衝突的位置開乙個鏈,建立鏈的方式和之前單鏈表的方式相同。如果要插入乙個值 計算當前值在雜湊之後的對映位置int k x n n n 之所以要取兩次模,是為了處理負數的模 將x儲存在e idx 中 該鍊錶的下乙個位置就是當前衝突位置的鍊錶的頭,...