思路:先对a数组排序,然后用贪心去写
题目的大致意思是把n个人分成几个团队,每个人都有自己的技能数,在分团队的时候要满足队中最低技能数 * 该团队的人数不能小于x。每个人只能在一个团队,但是有的人可以没有团队。
那么就对这些程序员的技能进行排序,从最高的开始分,这样就可以满足团队的数量最大。
#include <bits/stdc++.h>
using namespace std;
int a[100005];
int main()
{
int t;cin>>t;
while(t--){
int n,x; cin>>n>>x;
for(int i=0;i<n;i++){
cin>>a[i];
}
sort(a,a+n);
int count1=0;int cnt = 0;
int k = n;
while(k--){
cnt++;
if(cnt*a[k]>=x){
count1++;
cnt = 0;
}
}
cout<<count1<<endl;
}
return 0;
}