CF1355B Young Exporers(思维)

题意:

给出一些人,他们有各自的害怕程度,害怕程度为k的人所属的团队人数必须大于等于k,请你分尽可能多的组,不一定所有人都要有组。

题解:

贪心的做法,每种人的人数除k,同时把余数给下一组人。

#include<bits/stdc++.h>
using namespace std;
const int maxn=3e5+100;
int T;
int N;
int a[maxn];
int main () {
    scanf("%d",&T);
    while (T--) {
        scanf("%d",&N);
        for (int i=1;i<=N;i++) a[i]=0;
        for (int i=1;i<=N;i++) {
            int x;
            scanf("%d",&x);
            a[x]++;
        }
        int ans=0,pre=0;
        for (int i=1;i<=N;i++) a[i]+=pre,ans+=(a[i])/i,pre=a[i]%i;
 
        printf("%d\n",ans);
    }
}

猜你喜欢

转载自www.cnblogs.com/zhanglichen/p/12918069.html