POJ 2456 Aggressive cows(二分查找最大化最小值)
2017-02-02 20:56
525 查看
题目链接:http://poj.org/problem?id=2456
【中文题意】有n间牛舍,第i间牛舍的位置在xi处。有m头牛,他们对牛舍都不满意,经常互相攻击。为了防止牛之间互相攻击,因此把每头牛放在距离其他牛尽量远的位置。也就是要最大化最近的两头牛之间的距离。
【思路分析】
1.对牛舍的位置进行排序。
2.把第一头牛放入x0牛舍。
3.二分距离,找到距离的最大值。
【AC代码】
【中文题意】有n间牛舍,第i间牛舍的位置在xi处。有m头牛,他们对牛舍都不满意,经常互相攻击。为了防止牛之间互相攻击,因此把每头牛放在距离其他牛尽量远的位置。也就是要最大化最近的两头牛之间的距离。
【思路分析】
1.对牛舍的位置进行排序。
2.把第一头牛放入x0牛舍。
3.二分距离,找到距离的最大值。
【AC代码】
#include<cstdio> #include<iostream> #include<cstring> #include<cmath> #include<queue> #include<stack> #include<map> #include<algorithm> using namespace std; #define N 100005 int n,m,x ; bool C(int d) { int last=0; for(int i=1; i<m; i++) { int crt=last+1; while(crt<n&&x[crt]-x[last]<d) { crt++; } if(crt==n)return false; last=crt; } return true; } void solve() { sort(x,x+n); int lb=0,ub=1e9+100; while(ub-lb>1) { int mid=(ub+lb)/2; if(C(mid))lb=mid; else ub=mid; } printf("%d\n",lb); } int main() { while(~scanf("%d%d",&n,&m)) { for(int i=0;i<n;i++) { scanf("%d",&x[i]); } solve(); } return 0; }
相关文章推荐
- POJ 2456 Aggressive cows(二分查找 最大化最小值)
- poj 2456 Aggressive cows (二分+贪心) (最大化最小值)
- POJ 2456 Aggressive cows (牛舍安放_二分+最大化最小值)
- POJ 2456 Aggressive cows【二分:最大化最小值】
- POJ 2456 Aggressive cows(二分-最大化最小值)
- CSU-ACM2017暑假集训2-二分搜索 poj-2456 Aggressive cows-最大化最小值
- poj 2456 Aggressive cows(二分搜索之最大化最小值)
- POJ 2456 Aggressive cows(二分答案,最大化最小值)
- POJ - 2456 Aggressive cows(二分搜索:最大化最小值)
- 【POJ】2456 - Aggressive cows 二分->最大化最小值
- Aggressive cows POJ 2456 (二分,最大化最小值)
- POJ 2456 Aggressive cows(二分搜索最大化最小值)
- poj 2456 Aggressive cows,二分,最大化最小值
- poj 2456 Aggressive cows - 二分(最大化最小值)
- POJ 2456 Aggressive cows(二分,最大化最小值)
- POJ---2456(Aggressive cows,贪心最大化最小值)
- poj 3258 River Hopscotch && poj 2456 Aggressive cows(最大化最小值)
- 【贪心专题】POJ 2456 Aggressive cows && NYOJ 586 疯牛(最大化最小值 贪心+二分搜索)
- POJ 2456 Aggressive cows (最大化最小值)
- POJ 2456 3258 3273 3104 3045(二分搜索-最大化最小值)