https://www.acwing.com/problem/content/description/5480/
思路
贪心,先计算理论最大值,再一步步减去,直到符合要求。
C++ 代码
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N = 110;
int n, m,t;
int b[N];
int main(){
cin >> n >> m;
for(int i = 1; i <= m; i ++ ){
cin >> t;
b[t] ++;
}
vector<int>he;
for(int i=1;i<=100;i++)
{
if(b[i]>0)
{
he.push_back(b[i]);
}
}
int can = m/n,cnt = 0;
for(int j = can; j >=1; j --){
cnt = 0;
for(int i = 0; i < he.size(); i ++ ){
cnt += he[i]/j;
}
if(cnt >= n){printf("%d",j);return 0;}
}
cout<< "0";
}