AcWing 5477. 套餐设计
原题链接
中等
作者:
小周不会做题
,
2024-04-04 21:24:14
,
所有人可见
,
阅读 1
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
const int N=110;
int a[N],b[N]; //b[i]表示种类为i的食物的数量
int n,m;
typedef pair<int,int> PII;
bool check(int mid) //判断m件食物是否能做出mid件套餐
{
int sum=0;
for(int i=1;i<=m;i++)
{
sum+=b[i]/mid;
}
//cout<<sum<<" ";
if(sum>=n) return true;
else return false;
}
bool judge(int a,int b)
{
return a>b;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=m;i++)
{
cin>>a[i],b[a[i]]++;
}
sort(b+1,b+N,judge);
//for(int i=1;i<=m;i++) cout<<b[i]<<" ";
int l=0,r=m/n;
while(l<r)
{
int mid=l+r+1>>1;
if(check(mid)) l=mid;
else r=mid-1;
}
cout<<l;
return 0;
}