POJ - 2456 Aggressive cows(二分查找)
2015-09-29 00:03
381 查看
Aggressive cows
Submit Status
Description
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
Sample Output
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.
题意:有N间牛舍,排在一条线上,第i号牛舍在xi的位置。有M头牛,希望将每头牛放在离其他牛尽量远的位置。求最大化最近两头牛的距离。
思路:二分搜索求解,判断条件是可以安排使得任意牛的距离不小于d。只要扫一遍n个牛舍就可以得到答案,O(n)的判断。
Time Limit: 1000MS | Memory Limit: 65536KB | 64bit IO Format: %I64d & %I64u |
Description
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.
题意:有N间牛舍,排在一条线上,第i号牛舍在xi的位置。有M头牛,希望将每头牛放在离其他牛尽量远的位置。求最大化最近两头牛的距离。
思路:二分搜索求解,判断条件是可以安排使得任意牛的距离不小于d。只要扫一遍n个牛舍就可以得到答案,O(n)的判断。
#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using namespace std; const int MAXN = 100000 + 1000; int x[MAXN]; int n, c; bool countNiu(int d) { int npos = x[0]; int cnt = 1; for (int i = 1; i < n; i++) { if (x[i]>=npos + d) { cnt++; npos = x[i]; } } if (cnt >= c) return true; return false; } int main() { while (scanf("%d%d", &n, &c) != EOF) { for (int i = 0; i < n; i++) scanf("%d", &x[i]); sort(x, x + n); int l = 0; int r = x[n-1]-x[0], m; while (r - l > 1) { m = (l + r) / 2; if (countNiu(m)) l = m; else r = m; } printf("%d\n", l); } }
相关文章推荐
- [noip 2012] 同余方程
- 谷歌正式开始补偿Nexus 6P重启门和电池门用户:最高赔400美元
- Android编程实现在自定义对话框中获取EditText中数据的方法
- android 高级知识点
- mysql update正则替换sql语句
- MySQL中REGEXP正则表达式使用大全
- 正则表达式之 Unicode 匹配特殊字符
- DropDownList设置客户端事件思路
- DropDownList添加客户端下拉事件操作
- 四个PHP非常实用的功能
- php提高网站效率的技巧
- PHP比较运算符的详细介绍
- PHP类的封装与继承详解
- PHP代码优化技巧小结
- php猜单词游戏
- php正则匹配文章中的远程图片地址并下载图片至本地
- 解决php表单重复提交实现方法
- js强制把网址设为默认首页
- pace.js页面加载进度条插件
- 网页从弹窗页面单选框传值至父页面代码分享