牛客小白月賽24 B 組隊

2021-10-05 16:48:42 字數 1115 閱讀 9366

時間限制:c/c++ 1秒,其他語言2秒

空間限制:c/c++ 262144k,其他語言524288k

64bit io format: %lld

題目描述

你的團隊中有 n個人,每個人有乙個能力值 ai ,現在需要選擇若干個人組成乙個團隊去參加比賽,由於比賽的規則限制,乙個團隊裡面任意兩個人能力的差值必須要小於等於 k ,為了讓更多的人有參加比賽的機會,你最多能選擇多少個人參加比賽?

輸入描述:

第一行乙個整數 t,表示案例組數。

每個案例有兩行:

第一行兩個正整數 n,k ,表示人的數量。

第二行n個以空格分隔的整數 ai,表示每個人的能力值。

輸出描述:

每個案例輸出一行,表示可以參加比賽的最多人數。

示例1

輸入:

15 3

8 3 5 1 6

輸出:

備註:

t<=10,1<=n<=2e5,1<=k<=1e9,1<=ai<=1e9

解題思路:

解法很簡單,輸入後排序,然後遍歷加入到佇列中,如果佇列頭和尾的值超過了題目限制,那麼彈出佇列頭部到符合題意為止,然後記錄資料,最後輸出答案即可.

**如下:

#include

using

namespace std;

typedef

int ll;

ll n,m;

ll v[

200005];

intmain()

sort

(v,v+n)

; queue<

int>q;

int mn=0;

for(

int i=

0;i) mn=mn>q.

size()

?mn:q.

size()

;}cout<}return0;

}

牛客小白月賽24 B 組隊 二分

解析 先把陣列排序,我們需要取某一段,這一段的最大 最小 k,關鍵是取哪一段。可以對於每個數,往後找,找到第乙個減它 k的,這中間一段就滿足了任意兩個數之差 k了。找的過程可以用upper lound x 它返回第乙個大於x的數。當然也可以直接手寫二分了。include include includ...

牛客練習賽24 B 鳳 凰

很久很久很久以前沒寫出來的題,現在突然想起來把它給補了 思路 對於1號節點的若干個兒子節點,我們發現其上有鳥的時間其實就等去該子樹的大小 1,然後該樹上的鳥到根節點又需要1秒,所以我們只需要找出根節點的若干個兒子中最大的子樹就行,用vector存圖會超時,所以直接就用鏈式前向星寫了 includeu...

牛客小白月賽24 題解

牛客小白月賽24 題解 最後還剩一道計算幾何,其實可以ak,但沒必要 b 簽到 include using namespace std const int n 2e5 10 int a n int main printf d n ans return 0 c 還行 includeusing name...