【平衡樹】第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 56 2 7 4 9
1 81 6
3 10
2 43 3
sample output
07
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...