洛谷 P1138 第k小整數

2022-07-17 07:36:29 字數 1153 閱讀 7966

現有n個正整數,n≤10000,要求出這n個正整數中的第k個最小整數(相同大小的整數只計算一次),k≤1000,正整數均小於30000。

輸入格式:

第一行為n和k; 第二行開始為n個正整數的值,整數間用空格隔開。

輸出格式:

第k個最小整數的值;若無解,則輸出「no result」。

輸入樣例#1:

10 3

1 3 3 7 2 5 1 2 4 6

輸出樣例#1:

3
n≤10000

——————————————————我是分割線————————————————————

1/*2

problem:

3oj:

4user: s.b.s.

5time:

6memory:

7length:8*/

9 #include10 #include11 #include12 #include13 #include14 #include15 #include16 #include17 #include18 #include19 #include20 #include21 #include22 #include23

#define f(i,j,k) for(int i=j;i<=k;++i)

24#define m(a,b) memset(a,b,sizeof(a))

25#define ff(i,j,k) for(int i=j;i>=k;i--)

26#define maxn 10001

27#define inf 0x3f3f3f3f

28#define maxm 4001

29#define mod 998244353

30//

#define local

31using

namespace

std;

32int

read()

35while(ch>='

0'&&ch<='9')

36return x*f;37}

38int

n,m,k;

39int

a[maxn];

40int

main()

41

view code

洛谷 P1138 第k小整數

題目傳送門 桶排 對於值域在可以接受的範圍內時,我們可以用不依賴比較的桶排去將資料排序。因為桶排不依賴比較排序,所以他可以打破 o nlogn 的複雜度下界,變成 o max value 的,不過時間是用空間換出來的。對於每乙個值 v 我們都開乙個陣列 sum v 來當做存放權值為 v 的資料的桶,...

洛谷 P1138 第k小整數

此題要求最小的第k個整數,首先我們可以用sort函式對資料進行從小到大排序,然後依次選擇。對以上資料排序得到的結果 例如 1 1 2 2 3 3 4 5 6 7。此時要得到第k個整數。例如,當k 3時,利用迴圈將a i 與a i 1 進行比較,例如 for i 0 i if k 1 這裡判斷k是否等...

洛谷題解 P1138 第k小整數

簡單來說 會的人跳過就行 桶排就是開兩個陣列,其中乙個用來輸入以及儲存樣例數列,另乙個用來排序 排序方法 我用的第二個陣列為b陣列 核心 我認為的 先翻譯一下 b陣列為儲存的那個桶,在b陣列中第a i 項的值為a i 的值,這樣等到下乙個a i 與b a i 的值相同時就會重複賦值 我不會優化啊 從...