線段樹 第k小數

2021-07-14 22:19:06 字數 1474 閱讀 4825

【平衡樹】第k小數

time limit:150000ms  memory limit:1655360k

case time limit:15000ms

description

現在已有n個整數,你有以下三種操作: 

a 表示加入乙個值為a的整數 

b 表示刪除其中值為b的整數 

k 表示輸出這些整數中第k小的數

input

第一行,兩個整數n,m,表示最開始有n個整數,總共有m個操作 

第二行用空格隔開的n個整數 

接下來m行,每行表示乙個操作

output

若干行,一行乙個整數,表示所求的第k小的數字

sample input

5 5 

6 2 7 4 9

1 81 6

3 10

2 43 3

sample output

0

7

hint

注意:如果有多個大小相同的數字,只把他們看做乙個數字,如樣例。 

若找不到第k小的數,輸出0 

資料範圍: 

0<=n<=2,000,000 

m<=1,000,000 

-1,000,000,000<=每個整數<=1,000,000,000

#include#include#include#include#includestruct node;

node tree[40000005];

long long n,m,tot=1,cnt=0;

long long dt=1;

bool flag;

void add(long long &p,long long l,long long r,long long k)

return;

} else if(tree[p].sum==0)

return;

} else if(tree[p].sum>=1)

return;

} else return;

} else if(p==0)

add(tree[p].ls,l,mid,k);

add(tree[p].rs,mid+1,r,k);

if(flag)tree[p].sum+=dt;

}long long query(long long p,long long l,long long r,long long k)

int main()

while(m--)

if(x==2)

if(x==3)

} //printf("%i64d",cnt);

}

牛客 第k小數 線性尋找第 k 小數

題目大意 給出長度為 n 的數列 a 要求找到第 k 小的數 題目分析 因為資料給的足夠大,所以約束就是必須線性完成操作,stl 中的 nth element 函式可以完美實現操作,算是學到了一波,格式 nth element a.begin a.begin k a.end 那麼 a k 就是第 k...

求第k小數

求第k小數,無非就是考查排序,請參考我最新的博文吧求第k小數 直接使用priority queue,在網上看到許多使用快排來求第k小數都是認為第k小就是排好序陣列中第k個元素,但是如果陣列中有相同的元素呢,例如 1,2,2,2,3,5 認為第三小是3還是2呢?我刷題時遇到的是認為是3。沒有想到什麼好...

查詢第K小數

查詢乙個陣列的第k小的數,注意同樣大小算一樣大。如 2 1 3 4 5 2 第三小數為3。輸入描述 輸入有多組資料。每組輸入n,然後輸入n個整數 1 n 1000 再輸入k。輸出描述 輸出第k小的整數。輸入例子 6 2 1 3 5 2 2 3 輸出例子 3 import j a.util.array...