poj 2456 Aggressive cows(二分搜索之最大化最小值)
2015-09-03 17:57
453 查看
Description
Input
Output
Sample Input
Sample Output
Hint
Source
USACO 2005 February Gold
View Code
Farmer John has built a new long barn, with N (2 <= N <= 100,000) stalls. The stalls are located along a straight line at positions x1,...,xN (0 <= xi <= 1,000,000,000). His C (2 <= C <= N) cows don't like this barn layout and become aggressive towards each other once put into a stall. To prevent the cows from hurting each other, FJ want to assign the cows to the stalls, such that the minimum distance between any two of them is as large as possible. What is the largest minimum distance?
Input
* Line 1: Two space-separated integers: N and C * Lines 2..N+1: Line i+1 contains an integer stall location, xi
Output
* Line 1: One integer: the largest minimum distance
Sample Input
5 3 1 2 8 4 9
Sample Output
3
Hint
OUTPUT DETAILS: FJ can put his 3 cows in the stalls at positions 1, 4 and 8, resulting in a minimum distance of 3. Huge input data,scanf is recommended.
Source
USACO 2005 February Gold
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<map> #include<set> using namespace std; #define N 100006 #define inf 1<<32 int x ; int n,m; bool solve(int d){ int cnt=1; int last=0; for(int i=1;i<n;i++){ if(x[i]-x[last]>=d) { cnt++; last=i; } } if(cnt>=m) return false; return true; } int main() { while(scanf("%d%d",&n,&m)==2){ for(int i=0;i<n;i++){ scanf("%d",&x[i]); } sort(x,x+n); int low=0; int high=x[n-1]-x[0]; while(low<high){ int mid=(low+high)>>1; if(solve(mid)){ high=mid; } else{ low=mid+1; } } printf("%d\n",low-1); } return 0; }
View Code
相关文章推荐
- python学习笔记(-)
- Java进程优雅关闭
- C++基础---字符串(string型字符串)
- CentOS 7 安装问题:dracut_initqueue[599]: Warning: Could not boot 原因,及解决办法
- 文章标题
- loadrunner安装注意事项
- CSS绘制Android Robot
- 文章标题
- maven -- 问题解决(二)解决“Could not calculate build plan”问题
- 模拟DVD管理器(及遇到的问题与解决)
- 迭代器模式(三):销售管理系统中数据的遍历的迭代器模式解决方案
- Count Complete Tree Nodes
- js正则表达式的使用与详解
- poj 2352 Stars (树状数组)
- NSLocale中常用的语言代码对照表
- 三十分钟掌握 STL
- Linux系统启动流程
- 录制脚本时events无限增加
- JSF中怎么使用Enum生成下拉列表
- c语言实现顺序二叉树的非递归的三种遍历算法