1175 區間中第k大的數
乙個長度為n的整數序列,編號0 - n - 1。進行q次查詢,查詢編號i至j的所有數中,第k大的數是多少。
例如: 1 7 6 3 1。i = 1, j = 3,k = 2,對應的數為7 6 3,第2大的數為6。
input
第1行:1個數n,表示序列的長度。(2 <= n <= 50000)
第2 - n + 1行:每行1個數,對應序列中的元素。(0 <= s[i] <= 10^9)
第n + 2行:1個數q,表示查詢的數量。(2 <= q <= 50000)
第n + 3 - n + q + 2行:每行3個數,對應查詢的起始編號i和結束編號j,以及k。(0 <= i <= j <= n - 1,1 <= k <= j - i + 1)
output
共q行,對應每乙個查詢區間中第k大的數。
input示例
5 1
7 6
3 1
3 0 1 1
1 3 2
3 4 2
output示例
7 6
1 相關問題 主席
樹
#include
#include
using namespace std;
const int
n=500005,
logn=20;
int n,tcnt;
int root[n];
struct chairtreect[n*logn];
intread()
while (ch>='0'&&ch<='9')
return
x*f;
} void insert(int l,int r,int &x,int val)
int query(int l,int r,int ll,int rr,int k)
int main()
int q=read();
while (q--)
return
0;}
51Nod 1175 區間中第K大的數
acm模版 遇見這種題,果斷直接套模版,主席樹,也就是可持久化線段樹。這裡需要說一下,由於比較懶,我的模版求得是第 k 小,並且下標是從 0 n 所以呢,我直接在輸出時下標偏移了一,並且對 k 稍加修飾,變成了求第 r l 2 k小的數,效果是一模一樣的,就醬紫。include include in...
51nod1175 區間中第K大的數
裸的主席樹。include include include includeusing namespace std define rep i,s,t for int i s i t i define dwn i,s,t for int i s i t i define clr x,c memset x...
51nod1175區間第k大 小 數(主席樹模板)
分析和思路 可能最先想到的就是把l,r區間的數拿出來排序後得到答案,但多次頻繁操作時間複雜度太高,這時候強大的資料結構主席樹就發揮出它強大的作用,這就是主席樹模板題目,套模板。主席樹本質就是線段樹 又稱可持久化線段樹 可以將歷史版本保留下來。對於區間 l,r 的第k大詢問,如果我們能夠得到乙個插入原...