poj2456(二分搜索)
2015-03-09 00:55
302 查看
题意:n间牛舍,m头牛,最近的两头牛的距离为d,求d的最大值;
key:二分搜索。从0-无穷大中搜索符合要求的值。
/*二分搜索*/ #include <iostream> #include <stdio.h> #include <vector> #include <algorithm> using namespace std; const int maxn = 1e5; int n, m; int INF = 1e7; int s = 0, e = INF; int num[maxn]; bool yes(int d) { int last = 0; int now; for(int i = 1; i < m; i++){ now = last + 1; while(now < n && num[now] - num[last] < d) //计数距离小于d的数目 now++; if(now == n) return 0; last = now; } return 1; } int main() { scanf("%d%d", &n, &m); for(int i = 0; i < n; i++){ scanf("%d", &num[i]); } sort(num, num + n); //将牛舍的位置从小到大排序 while(e - s > 1){ int mid = (s + e) / 2; if(yes(mid)) s = mid; //更新区间端点 else e = mid; } printf("%d\n", s); return 0; }
相关文章推荐
- 【贪心专题】POJ 2456 Aggressive cows && NYOJ 586 疯牛(最大化最小值 贪心+二分搜索)
- poj2456 二分搜索 <挑战程序设计竞赛>
- 《挑战程序设计竞赛》3.1.1 二分搜索-最大化最小值 POJ1064 2456 3258 3273 3104 3045
- poj 2456 Aggressive cows(二分搜索之最大化最小值)
- NYOJ 586 疯牛 & POJ 2456(二分搜索 + 贪心)
- POJ 2456 Aggressive cows(二分搜索最大化最小值)
- NYOJ 586 疯牛 & POJ 2456(二分搜索 + 贪心)(最大化最小值)
- POJ - 2456/USACO - Feb05 Gold Aggressive cows 二分搜索+区间选点+贪心
- POJ 2456 3258 3273 3104 3045(二分搜索-最大化最小值)
- CSU-ACM2017暑假集训2-二分搜索 poj-2456 Aggressive cows-最大化最小值
- 二分搜索求最大值最小化--poj2456
- POJ2456 Aggressive cows(二分搜索)
- POJ - 2456 Aggressive cows(二分搜索:最大化最小值)
- POJ 2456 Aggressive cows 二分搜索
- POJ 2456 Aggressive cows (二分搜索)
- 二分搜索 POJ 2456 Aggressive cows
- poj 2456 Aggressive cows poj 3258 (二分)
- poj 3685 Matrix(二分搜索之查找第k大的值)
- POJ 2456 Aggressive cows 二分查找
- poj 3977 折半枚举二分搜索