廈門1165 第K小數 樹狀陣列 不重複數字

2021-09-30 05:30:16 字數 1169 閱讀 7815

1165.第k小數

time limit: 1000 ms         memory limit: 65536 k

total submissions: 467 (117 users)         accepted: 117 (66 users)

[ my solution ]

description

給定乙個空的正整數集合s,然後再給定一組操作,這組操作共有三種

1. 新增某個正整數a到集合中,若a已經在s中則不需要重複加入

2. 從集合中刪除某個整數a,若a不在s中則忽略該操作

3. 查詢集合中的第k小數,若不存在第k小數則輸出-1,否則輸出第k小數

input

第一行為正整數n(2<=n<=100000)分別表示操作的個數

接下來n行每行為兩個數字表示乙個操作。第乙個數字為操作的編號,1表示新增操作,2表示刪除操作,3表示查詢操作,

第二個數字為要新增刪除的正整數a(0output

對於每乙個查詢操作,若不存在第k小數則輸出-1,否則輸出第k小數

sample input

101 1

1 12 3

3 13 2

2 11 2

3 11 1

3 1sample output1-1

21hint

輸入輸出巨大,如果您使用c/c++建議用scanf和printf輸入輸出。

#include

#include

#include

using namespace std;

const int n=100000;

int c[n+1];

inline int lowbit(int x)

void update(int x,int val)

}int getsum(int x)

return cnt;

}int binary_search(int l,int r,int goal)

return -1;

}int main()

}else if(x==2)

}else}}

return 0;}/*

101 1

1 12 3

3 13 2

2 11 2

3 11 1

3 1*/

第k小整數(樹狀陣列)

洛谷傳送門 入門難度。沒錯,但是我並不是要暴力做。而是用樹狀陣列來做。先離散化,然後隨便搞一搞就可以了。暈。比暴力還慢 如果要查詢某一區間的的話可以把區間取出重新建樹,然後再求。更暴力 1 include 2 include 3 include 4 define n 10001 5 define l...

陣列中的第k小數

描述 以盡量高效率求出亂序中的k小數 輸入 第一行 陣列長度 第二行 陣列元素 空格隔開 第三性 第幾小的數 輸出 第k小的數 樣例輸入 5 6 1 2 9 3 8 2樣例輸出 解題思路利用快速排序找到主元的位置,判斷主元是第幾小的 主元位置大了剪掉右邊的 主元位置小了剪掉左邊的 假設要找第三小的數...

動態維護集合第k小數字 樹狀陣列 二分

設計一種資料結構能夠實現以下幾個操作 在結構中插入乙個數字x 在結構中刪除乙個數字x 如果沒有該數字,應當不操作 查詢結構中的第k小數字 相同數字應當累計,如 1 5 3 3 1,第 3 大的數字是 3,第 5 大的數字是 5.其中1 x 100000 一秒需要執行100000次隨機操作,所以三項操...