• 暴力枚举+数学——1267J


     冲就完事了

    /*
    把每种颜色的数量统计出来,并求出最小的数量Min
    从Min+1开始降序枚举s,暴力判就行了 
    */
    #include<bits/stdc++.h>
    using namespace std;
    #define N 2000006
    
    int n,a[N],tot;
    map<int,int>mp;
    map<int,int>::iterator it;
    int cnt[N];
    
    inline int judge(int x,int s){ 
        int k=x/s,mod=x%s;
        if(mod==0)return k;
        if(s-1-mod<=k)return k+1;
        return 0; 
    }
    
    int main(){
        int t;cin>>t;
        while(t--){
            mp.clear();
            cin>>n;
            for(int i=1;i<=n;i++){
                int x;scanf("%d",&x);
                mp[x]++;
            }
                
            tot=0;
            for(it=mp.begin();it!=mp.end();it++)cnt[++tot]=it->second;
            
            int Min=0x3f3f3f3f;
            for(int i=1;i<=tot;i++)Min=min(Min,cnt[i]);
            
            for(int s=Min+1;s>=2;s--){
                int flag=1,res=0;
                for(int i=1;i<=tot;i++){
                    if(judge(cnt[i],s)==0){flag=0;break;}
                    else res+=judge(cnt[i],s);
                }
                if(flag){cout<<res<<'
    ';break;}
            }
        }
    }
  • 相关阅读:
    无限维
    黎曼流形
    why we need virtual key word
    TOJ 4119 Split Equally
    TOJ 4003 Next Permutation
    TOJ 4002 Palindrome Generator
    TOJ 2749 Absent Substrings
    TOJ 2641 Gene
    TOJ 2861 Octal Fractions
    TOJ 4394 Rebuild Road
  • 原文地址:https://www.cnblogs.com/zsben991126/p/12285608.html
Copyright © 2020-2023  润新知