第k小整數(樹狀陣列)

2022-03-01 11:45:58 字數 870 閱讀 2605

洛谷傳送門

入門難度。。

沒錯,但是我並不是要暴力做。

而是用樹狀陣列來做。

先離散化,然後隨便搞一搞就可以了。(暈。比暴力還慢)

如果要查詢某一區間的的話可以把區間取出重新建樹,然後再求。(更暴力)

1 #include 2 #include 3 #include 4

#define n 10001

5#define lowbit(x) x & -x67

using

namespace

std;89

intn, m, k;

10int

c[n];

11bool b[3 *n];

12struct

node

13a[n];

1617 inline bool

cmp(node x, node y)

1821

22 inline void add(int

x)2329}

3031

int solve(int

k)32

40return ans + 1;41

}4243int

main()

4452

if(m

5357 sort(a + 1, a + m + 1

, cmp);

58for(i = 1; i <= m; i++) add(a[i].id);

59 printf("

%d\n

", a[solve(k)].val);

60return0;

61 }

view code

第k小整數

現有n個正整數,n 10000,要求出這n個正整數中的第k個最小整數 相同大小的整數只計算一次 k 1000,正整數均小於30000。輸入格式 第一行為n和k 第二行開始為n個正整數的值,整數間用空格隔開。輸出格式 第k個最小整數的值 若無解,則輸出 no result 輸入樣例 1 10 3 1 ...

9204 第k小整數

time limit 10 second memory limit 2 mb 問題描述 現有n個整數,n 10000,要求出這n個正整數中的第k個最小整數 相同大小的整數只計算一次 k 1000,正整數均小於30000 第一行為n和k,第二行開始為n個正整數的值,整數間用空格隔開。第k個最小整數的值...

9204 第k小整數

time limit 10 second memory limit 2 mb 問題描述 現有n個整數,n 10000,要求出這n個正整數中的第k個最小整數 相同大小的整數只計算一次 k 1000,正整數均小於30000 第一行為n和k,第二行開始為n個正整數的值,整數間用空格隔開。第k個最小整數的值...