演算法訓練 數字盒子 Hashtable

2021-09-12 19:07:38 字數 1014 閱讀 9216

你有乙個盒子,你可以往裡面放數,也可以從裡面取出數。

初始時,盒子是空的,你會依次做 q 個操作,操作分為兩類:

第一行乙個正整數 q,表示操作個數。

接下來 q 行依次描述每個操作。每行 2 個用空格隔開的非負整數 op,x 描述乙個操作:op 表示操作型別,op=1 則表示這是乙個插入操作,op=2 則表示這是乙個刪除操作;x 的意義與操作型別有關,具體見題目描述。

按順序對所有操作輸出,對於每個操作輸出一行,如果成功則輸出「succeeded」(不含引號),如果失敗則輸出「failed」(不含引號)。

61 100

1 100

2 100

1 200

2 100

2 200

succeeded

failed

succeeded

succeeded

failed

succeeded

對於 60% 的資料,保證 x<10^5。

對於 100% 的資料,保證 x<1018,q≤5*105。

對於所有資料,保證 op∈。

時間限制:10 sec

空間限制:256 mb

#include

#include

using

namespace std;

typedef

long

long ll;

const

int mod =

1000003

;vectortable[mod]

;int

hash

(ll x)

bool

check

(int op,ll x)}if

(op==1)

return0;

//失敗

}else

return0;

}}intmain()

else

}return0;

}

鄧俊輝 演算法訓練營練習 數字盒子

數字盒子 問題描述 你有乙個盒子,你可以往裡面放數,也可以從裡面取出數。初始時,盒子是空的,你會依次做 q 個操作,操作分為兩類 插入操作 詢問盒子中是否存在數 x,如果不存在則把數 x 丟到盒子裡。刪除操作 詢問盒子中是否存在數 x,如果存在則取出 x。對於每個操作,你需要輸出是否成功插入或刪除。...

演算法訓練 數字遊戲

資源限制 時間限制 1.0s 記憶體限制 256.0mb 問題描述 給定乙個1 n的排列a i 每次將相鄰兩個數相加,得到新序列,再對新序列重複這樣的操作,顯然每次得到的序列都比上一次的序列長度少1,最終只剩乙個數字。例如 3 1 2 4 4 3 6 7 916 現在如果知道n和最後得到的數字sum...

試題 演算法訓練 數字遊戲

題目鏈結 問題描述 給定乙個1 n的排列a i 每次將相鄰兩個數相加,得到新序列,再對新序列重複這樣的操作,顯然每次得到的序列都比上一次的序列長度少1,最終只剩乙個數字。例如 3 1 2 4 4 3 6 7 916 現在如果知道n和最後得到的數字sum,請求出最初序列a i 為1 n的乙個排列。若有...