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

2021-08-28 13:19:28 字數 1277 閱讀 2535

/*數字盒子

問題描述

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

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

插入操作:詢問盒子中是否存在數 x,如果不存在則把數 x 丟到盒子裡。

刪除操作:詢問盒子中是否存在數 x,如果存在則取出 x。

對於每個操作,你需要輸出是否成功插入或刪除。

輸入

第一行乙個正整數 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*/

#include using namespace std;

/*將long long定義為ll 方便書寫*/

typedef long long ll;

const int mod = 1000003;//取模的大小微 1000003

vectortable[mod];//記錄數字取模後的位置

/*返回x取模mod的值*/

int hash(ll x)

//函式判斷插入 或 刪除是否成功

bool operate(int op,ll x)

/*插入操作*/

鄧俊輝演算法訓練營習題 最小交換

最小交換 時間限制 1 sec 空間限制 256 mb 問題描述 給定乙個 1 到 n 的排列 即乙個序列,其中 1,n 之間的正整數每個都出現了恰好 1 次 你可以花 1 元錢交換兩個相鄰的數。現在,你希望把它們公升序排序。求你完成這個目標最少需要花費多少元錢。輸入格式 第一行乙個整數 n,表示排...

鄧俊輝 演算法訓練營練習 二叉排序樹

先序遍歷 輸出自己 左子樹 右子樹 中序遍歷 輸出左子樹 自己 右子樹 include using namespace std struct node t 10000 root代表根節點 cnt代表二叉樹大小 int root,cnt 建樹 int insert int v,int x t x lc...

鄧俊輝演算法訓練營習題 樓爾邦德(二分)

樓爾邦德 時間限制 2 sec 空間限制 256 mb 問題描述 給定包含 n 個數的序列 a。再給出 q 個詢問,每個詢問包含乙個數 x,詢問的是序列 a 中不小於 x 的最小整數是多少 無解輸出 1 輸入格式 第一行乙個數 n,表示序列長度。第二行 n 個用空格隔開的正整數,描述序列中的每乙個元...