Solution

考虑 二分

首先要确定二分的对象,显然二分天数较为简单。

每次找到的 \(mid\) 需要判断是否能让整队人吃饱,那就调用一个 check()

对于 check() ,求出每包食物可供的人数,相加后与 \(n\) 相比较。

具体操作见下。

Code

#include<iostream>
using namespace std;
#define ll long long
#define max(x,y) x>y?x:y
ll n,m,l=1,r,a[1005],q[100005],d,o,mid,b;
inline bool check(int x)
{
ll t=0;
for(int i=1;i<=d;++i)
t+=q[i]/x;
return t>=n;
}
int main()
{
ios::sync_with_stdio(false);
cin>>n>>m;
for(int i=1;i<=m;++i)
cin>>a[i],++q[a[i]],d=max(d,a[i]),b=max(b,q[a[i]]);
r=b;
while(l<=r)
{
mid=(l+r)/2;
if(check(mid))
l=mid+1,o=mid;
else r=mid-1;
}
cout<<o<<"\n";
return 0;
}

最新文章

  1. Spring集成JUnit测试
  2. 关于mybatis一对多关联时
  3. Java Security:公钥私钥、数字签名、消息摘要是什么
  4. 第31天 mvp
  5. java中线程分两种,守护线程和用户线程。
  6. 20145222黄亚奇《Java程序设计》第8周学习总结
  7. 去掉display:inline-block元素间的多余空白
  8. 观察者模式(一)--《Head First DesignPattern》
  9. Web中的监听器【Listener】
  10. 【学习总结】Info.plist和pch文件的作用
  11. Postman(API &amp; HTTP请求调试插件)和Apizza fiddler
  12. 应用程序无法启动,因为应用程序的并行配置不正确,有关详细信息,请参阅应用程序事件日志,或使用命令行SxsTrace.exe工具
  13. struts2系列笔记(1)
  14. 前端总结&#183;基础篇&#183;JS(三)arguments、callee、call、apply、bind及函数封装和构造函数
  15. Office 365开发概述及生态环境介绍(二)
  16. websocket协议握手详解
  17. Android 全屏设置和禁止横屏竖屏切换
  18. 【转载】word2vec原理推导与代码分析
  19. 并发 ---- 6. IO 多路复用
  20. python之pandas简单介绍及使用(一)

热门文章

  1. MySQL 连接超时:报错SQLSTATE[HY000] [2002] Connection timed out
  2. Express 使用 Cookie
  3. jsp一句话木马总结
  4. [RootersCTF2019]I_&lt;3_Flask-1|SSTI注入
  5. 3-12 Python函数定义与调用
  6. SCP远程传输文件
  7. Docker安装Openresty总结
  8. Jenkins+Gitlab实现持续集成持续部署
  9. G&amp;GH04 本地连接至远程
  10. Python数据科学手册-机器学习: 主成分分析