题解
2024-05-05 12:14:10
发布于:广东
21阅读
0回复
0点赞
二分
#include <iostream>
#include <cstdio>
using namespace std;
int bucket[1005];
int n, m, x;
bool check(int x){//check
int ct = 0;
for(int i = 1; i <= 100; i++){
ct += bucket[i] / x;
}return ct >= m;
}
int main(){
cin >> m >> n;
for(int i = 1; i <= n; i++){
cin >> x;
bucket[x]++;//记录每种食物的个数
}int left = 1, right = 100;
while(left <= right){//二分模版
int mid = (left + right) / 2;
if(check(mid)) left = mid + 1;
else right = mid - 1;
}cout << left - 1;
return 0;
}
时间复杂度:
这里空空如也
有帮助,赞一个