NYOJ疯牛【二分】
来源:互联网 发布:客户无忧软件下载 编辑:程序博客网 时间:2024/06/05 10:18
疯牛
时间限制:1000 ms | 内存限制:65535 KB
难度:4
- 描述
- 农夫 John 建造了一座很长的畜栏,它包括N (2 <= N <= 100,000)个隔间,这些小隔间依次编号为x1,...,xN (0 <= xi <= 1,000,000,000).
但是,John的C (2 <= C <= N)头牛们并不喜欢这种布局,而且几头牛放在一个隔间里,他们就要发生争斗。为了不让牛互相伤害。John决定自己给牛分配隔间,使任意两头牛之间的最小距离尽可能的大,那么,这个最大的最小距离是什么呢?- 输入
- 有多组测试数据,以EOF结束。
第一行:空格分隔的两个整数N和C
第二行——第N+1行:分别指出了xi的位置 - 输出
- 每组测试数据输出一个整数,满足题意的最大的最小值,注意换行。
- 样例输入
5 312849
- 样例输出
3
#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>#include<list>#include<queue>#include<list>#include<vector>using namespace std;const int maxn = 100010;int num[maxn],n,c;bool judge(int mid){ int cnt = c-1,pre = 1; for(int i=2;i<=n;++i){ if(num[i]-num[pre]>=mid){ pre=i;cnt--; } } return cnt<=0;}int main(){ while(scanf("%d%d",&n,&c)!=EOF){ for(int i=1;i<=n;++i){ scanf("%d",&num[i]); } sort(num+1,num+n+1); int left=0,right=1000000010,ans; while(left<=right){ int mid=(left+right)>>1; if(judge(mid)){ ans=mid; left=mid+1; } else { right=mid-1; } } printf("%d\n",ans); } return 0;}
0 0
- NYOJ疯牛【二分】
- NYOJ 586-疯牛(二分)
- nyoj 疯牛(二分+贪心)
- nyoj 疯牛(二分搜索+贪心)
- NYOJ-586 疯牛 二分枚举+贪心
- nyoj 586 疯牛(二分+贪心)
- nyoj--586--疯牛(二分&&枚举)
- NYOJ 5177 疯牛(最大化最小值 二分搜索)
- NYOJ 586.疯牛(二分枚举+贪心)
- NYOJ 586 疯牛(贪心+二分)
- NYOJ 586 疯牛 (二分搜索答案)
- NYOJ 503 二分
- nyoj 306 搜索+二分
- nyoj 306 二分+dfs
- nyoj 310二分+dinic
- nyoj+二分前缀和
- NYOJ 586 疯牛 & POJ 2456(二分搜索 + 贪心)
- nyoj 疯牛 586 (二分&&枚举) 好题
- HDU1078FatMouse and Cheese
- Error:Cause: com.android.sdklib.repository.FullRevision
- JAVA之旅(十七)——StringBuffer的概述,存储,删除,获取,修改,反转,将缓存区的数据存储到数组中,StringBuilder
- 产品经理必备成长修炼秘籍(深度解析)
- 贪心算法
- NYOJ疯牛【二分】
- 使用PlayCanvas制作一个简单的小游戏(四)
- 字符串
- Java反射学习总结(3)——反射的基本操作
- Codeforces Round #357 (Div. 2)
- 旋转数组的最小数字
- 【复习】servlet之Http状态码
- 如何压缩Golang 编译出的可执行文件大小
- 删除数组中的重复元素