2019 GDUT Rating Contest #I E. Convention 【# 2019 GDUT Rating Contest #I E. Convention】题目见 :
http://codeforces.com/group/NVaJtLaLjS/contest/238166/problem/E
题目大意: 有n头牛,第i头牛在ti到达,有m辆车,每辆能够载c头牛,求出最小的最长等待时间。
思路: 看见“最小化最大值”,你会不由自主想到“二分”。
一次优化: 用have,used,分别表示当前的积累牛数,已经使用的车数,即可快速模拟。
实现:
#include
#include
#include
#include
using namespace std;
int n,m,c,t,l,r,mid;
int a[100500];
bool can(int p)
{
int i,j,now=a[1],used=0,have=1;
for (i=2;
i<=n;
i++)
{
have++;
if (a[i]-now>p||have>c)
{
used++;
now=a[i];
have=1;
}
if (used+1>m||have>c) return false;
}
return true;
}
int main()
{int i;
scanf("%d %d %d",&n,&m,&c);
for (i=1;
i<=n;
i++)
scanf("%d",&a[i]);
sort(a+1,a+n+1);
l=0;
r=1000000000;
while (r-l>1)
{
// printf("%d %d\n",l,r);
mid=(l+r)/2;
if (can(mid)) r=mid;
else l=mid;
}
printf("%d\n",r);
return 0;
}
推荐阅读
- 题解|【HNOI2017】大佬-dalao
- 2019 GDUT Rating Contest #II 这是群题解,七篇!!!
- # 2019 GDUT Rating Contest #I H. Mixing Milk
- # 2019 GDUT Rating Contest #I A. The Bucket List
- # 2019 GDUT Rating Contest #I G. Back and Forth
- 2019 GDUT Winter Personal Training Contest III (Div. 2) A题 QAQ 题解
- 2019 GDUT Winter Personal Training Contest I (Div. 2) A. Protect Sheep
- 题解|题解 | K-ary Heap-2019牛客暑期多校训练营第六场F题
- ACM|[dsu] codeforces 375D. Tree and Queries
- 题解|[BZOJ3817] Sum