• 题意:给你一组人\(a\),现在要将这些人进行分组,对于\(i\),只有某一组的人数\(\ge a_{i}\)时,\(i\)才可以加入这个组,问最多能够有多少组,(不必将所有人都选用).

  • 题解:我们将所有\(a_{i}\)相同的用一个桶存一下,然后升序遍历这个桶,假如桶里面的人数\(\ge a_{i}\),那么它们就能够组成一组,之后我们再取余,将剩下的人记录下来,继续遍历后面的桶,如果这些剩余的人数\(\ge a_{i}\),那么它们也可以组成一组,继续遍历下去就行了.

  • 代码:

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <cmath>
    #include <algorithm>
    #include <stack>
    #include <queue>
    #include <vector>
    #include <map>
    #include <set>
    #include <unordered_set>
    #include <unordered_map>
    #define ll long long
    #define fi first
    #define se second
    #define pb push_back
    #define me memset
    const int N = 1e6 + 10;
    const int mod = 1e9 + 7;
    using namespace std;
    typedef pair<int,int> PII;
    typedef pair<long,long> PLL; int t;
    int n,a[N];
    map<int,int> mp;
    int main() {
    ios::sync_with_stdio(false);cin.tie(0);
    cin>>t;
    while(t--){
    cin>>n;
    mp.clear();
    for(int i=1;i<=n;++i){
    cin>>a[i];
    mp[a[i]]++;
    } int cnt=0;
    int rest=0;
    for(auto w:mp){
    cnt+=w.se/w.fi;
    rest+=w.se%w.fi;
    if(rest>=w.fi){
    cnt+=rest/w.fi;
    rest=rest%w.fi;
    }
    }
    printf("%d\n",cnt); } return 0;
    }

最新文章

  1. CSS3-box盒布局
  2. svn: E155004 &#39;XX&#39; is already locked
  3. POJ3415 Common Substrings(后缀数组 单调栈)
  4. 关于eclipse入门开发c/c++文章推荐
  5. ci中如何得到配置的url
  6. Poj 1273 Drainage Ditches(最大流 Edmonds-Karp )
  7. [CF]codeforces round 369(div2)
  8. 从Eclipse到Android Studio经历
  9. 关于BootStrap下图标的显示问题
  10. Linux I2C设备驱动编写(三)-实例分析AM3359
  11. js事件防止冒泡
  12. haskell学习笔记&lt;1&gt;--基本语法
  13. gridView 主从表实现
  14. 【代码学习】GD库中图片缩印
  15. 必应app测试
  16. 【BZOJ1018】堵塞的交通(线段树)
  17. Cocos2D旋转炮塔到指定角度(三)
  18. IIS 配置详解 请求长度限制调整
  19. #define SIG_DFL ((void(*)(int))0)
  20. Neo4j之Cypher学习总结

热门文章

  1. Ossec 安装并配置邮件通知
  2. 【葵花宝典】All-in-One模式安装KubeSphere
  3. consul是什么?
  4. JVM虚拟机基础
  5. 30分钟带你理解 Raft 算法
  6. CentOS系统内核升级(在线 离线)
  7. Soul API 网关源码解析 03
  8. axios用法
  9. celery 原理
  10. 《Effective C#》之减少装箱和拆箱