题目链接: https://codeforces.com/problemset/problem/1355/B
题目描述: 输入探险家的经验级别,组队时一个队伍的人数不能少于队伍中任一人的经验级别(人数大于队伍中最高经验级别即可),要求能组成最多的队伍数量。
解题思路: 贪心 选择经验级别较低的人优先组成满足条件的队伍。——先按经验级别从低到高排序,当满足条件时就组成一个队。
代码:
#include<iostream>
#include<algorithm>
using namespace std;
int num[200005];
int main()
{
int t;
cin >> t;
while (t--)
{
int n;
cin >> n;
for (int i = 0; i < n; i++)
cin >> num[i];
sort(num, num + n);
int ans = 0, count = 0;
for (int i = 0; i < n; i++)
{
count++;
if (count >= num[i])
{
ans++;
count = 0;
}
}
cout << ans << endl;
}
return 0;
}