給你n個數, 讓你組隊, 問如何組能組成乙個小組,使這個小組元素最多且這個小組滿足裡面得元素差值兩兩等於小於k.
佇列和區間思維差不多。
先排序再遍歷
每次更新一段新的區間, 如果出現當前差值大於k, 那麼增加左區間,反之增加右區間的值。l - r即為小組的元素個數。
#include
using
namespace std;
long
long a[
200005];
intmain()
long
long sum =1;
while
(!f.
empty()
)else
ans =
max(ans, sum);}
ans =
max(ans, sum)
; cout << ans << endl;
while
(!q.
empty()
) q.
pop();
while
(!f.
empty()
) f.
pop();
}return0;
}
#include
using
namespace std;
long
long a[
200005];
intmain()
else
ans =
max(ans, r - l);}
cout << ans << endl;
}return0;
}
牛客小白月賽24 B 組隊
時間限制 c c 1秒,其他語言2秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld 題目描述 你的團隊中有 n個人,每個人有乙個能力值 ai 現在需要選擇若干個人組成乙個團隊去參加比賽,由於比賽的規則限制,乙個團隊裡面任意兩個人能力的差值必須要小於...
牛客小白月賽24 B 組隊 二分
解析 先把陣列排序,我們需要取某一段,這一段的最大 最小 k,關鍵是取哪一段。可以對於每個數,往後找,找到第乙個減它 k的,這中間一段就滿足了任意兩個數之差 k了。找的過程可以用upper lound x 它返回第乙個大於x的數。當然也可以直接手寫二分了。include include includ...
牛客 2020 11 14牛客小白月賽29 B
by 041 本人原文 簡單的說,對於乙個bool量x x 1 x x 0 0 x 1 1 x 0 x x 1 x x 0 x 所以,對於每一次操作,在有影響 上面的2 3 5三種情況 到的位置加入相應操作的標記最後整合就行 對於第i位 0的操作 清空之前該位置所有的操作,加上標記1 對於第i位 1...