题目:
B. Young Explorers
链接:link
题目大意:一群人去探险,每个人都有对应的经验值,经验值用来分组,例如经验值为1的人要去人数大于等于1的小组,问最多能分多少组
思路:贪心策略,排序,按照从小到大排,先让经验值少的人组队。
#include <iostream>
#include<string>
#include<algorithm>
#define ll long long
using namespace std;
const int N=3000001;
int a[N];
int main(int argc, const char * argv[]) {
int t;
cin>>t;
while (t--) {
int n,ans=0,cnt=0;
cin>>n;
for (int i=0;i<n ; i++) {
cin>>a[i];
}
//最多能组成多少队伍
sort(a, a+n);
for(int i=0;i<n;i++){
cnt++;
if(cnt>=a[i]){
cnt=0;
ans++;
}
}
cout<<ans<<endl;
}
return 0;
}