题解 CF1011B Planning The Expedition
2024-09-08 18:27:51
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;
}
最新文章
- Spring集成JUnit测试
- 关于mybatis一对多关联时
- Java Security:公钥私钥、数字签名、消息摘要是什么
- 第31天 mvp
- java中线程分两种,守护线程和用户线程。
- 20145222黄亚奇《Java程序设计》第8周学习总结
- 去掉display:inline-block元素间的多余空白
- 观察者模式(一)--《Head First DesignPattern》
- Web中的监听器【Listener】
- 【学习总结】Info.plist和pch文件的作用
- Postman(API &; HTTP请求调试插件)和Apizza fiddler
- 应用程序无法启动,因为应用程序的并行配置不正确,有关详细信息,请参阅应用程序事件日志,或使用命令行SxsTrace.exe工具
- struts2系列笔记(1)
- 前端总结&#183;基础篇&#183;JS(三)arguments、callee、call、apply、bind及函数封装和构造函数
- Office 365开发概述及生态环境介绍(二)
- websocket协议握手详解
- Android 全屏设置和禁止横屏竖屏切换
- 【转载】word2vec原理推导与代码分析
- 并发 ---- 6. IO 多路复用
- python之pandas简单介绍及使用(一)
热门文章
- MySQL 连接超时:报错SQLSTATE[HY000] [2002] Connection timed out
- Express 使用 Cookie
- jsp一句话木马总结
- [RootersCTF2019]I_<;3_Flask-1|SSTI注入
- 3-12 Python函数定义与调用
- SCP远程传输文件
- Docker安装Openresty总结
- Jenkins+Gitlab实现持续集成持续部署
- G&;GH04 本地连接至远程
- Python数据科学手册-机器学习: 主成分分析