區間第k大

2021-09-12 08:07:58 字數 844 閱讀 5361

問題描述

給定乙個序列,每次詢問序列中第l個數到第r個數中第k大的數是哪個。

輸入格式

第一行包含乙個數n,表示序列長度。

第二行包含n個正整數,表示給定的序列。

第三個包含乙個正整數m,表示詢問個數。

接下來m行,每行三個數l,r,k,表示詢問序列從左往右第l個數到第r個數中,從大往小第k大的數是哪個。序列元素從1開始標號。

輸出格式

總共輸出m行,每行乙個數,表示詢問的答案。

樣例輸入

51 2 3 4 5

21 5 2

2 3 2

樣例輸出42

資料規模與約定

對於30%的資料,n,m<=100;

對於100%的資料,n,m<=1000;

保證k<=(r-l+1),序列中的數<=106。

解題思路:

1、將序列儲存至一維陣列中

2、將所求區間的序列儲存至新的陣列中

3、對新陣列進行排序

4、求出所要求區間的第k 大數

#include #include #include#include #define max 10000

using namespace std;

bool cmp(int x,int y)

int main()

scanf("%d",&m);

while(m--)

;int p=0;

for(int j=l-1;jsort(b,b+r-l+1,cmp);

printf("%d\n",b[k-1]);

}return 0;

}

區間第k大

歸併樹 include include include include include include include include include include include define ll long long define max x,y x y x y define min x,y ...

求區間第k大

int a mx void insert int a,int l,int r int divide int a,int l,int r 劃分子問題 a l x return l int select int s,int l,int r,int k,int len 返回s陣列l r的第k大數的下標 w...

區間第k大(主席樹)

學了一下主席樹模板題,當初看了網上的主席樹講解都沒有看懂,後面看了嗶哩嗶哩的uestc的主席樹,終於看懂了思想。每次更新的複雜度都為logn。每次更新的話就是對要更新的點路徑上的點重新更加乙個,然後進行對沒有影響的那些進行連邊。然後用乙個root記錄每乙個線段樹的根節點下標。include incl...