51nod 1175 區間中第K大的數

2021-08-09 21:24:03 字數 1079 閱讀 9575

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大詢問,如果我們能夠得到乙個插入原...