关闭

POJ 2456 Aggressive cows(二分答案,最大化最小值)

459人阅读 评论(0) 收藏 举报
分类:

题目链接
题意:给出n个牛舍坐标(在一直线上),然后有m个牛要入住,现在问相邻牛之间的最小距离最大是几
解答:二分答案,函数ok(d)检查距离是d合法与否


#include<cstdio>
#include<algorithm>

//#include<bits/stdc++.h>
using namespace std;
#define LL long long
#define pb push_back
#define X first
#define Y second
#define cl(a,b) memset(a,b,sizeof(a))
typedef pair<long long ,long long > P;
const int maxn=100005;
const LL inf=1LL<<45;
const LL mod=1e9+7;

LL a[maxn];
int n,m;
bool ok(int d){
    int last=0;
    for(int i=1;i<m;i++){
        int cur=last+1;
        while(cur<n&&a[last]+d>=a[cur])cur++;
        if(cur==n)return false;
        last=cur;
    }
    return true;
}
void solve(){
    int l=0,r=999999999;
    while(r-l>1){
        int mid=(l+r)/2;
        if(ok(mid))l=mid;
        else r=mid;
    }
    printf("%d\n",r);
}
int main(){
    while(~scanf("%d%d",&n,&m)){
        for(int i=0;i<n;i++){
            scanf("%lld",&a[i]);
        }
        sort(a,a+n);
        solve();
    }
    return 0;
}


0
0
查看评论

POJ 2456 Aggressive cows(二分查找 最大化最小值)

题意:给出n个牛棚的位置,选择其中的m个给牛住,使得牛之间的距离的最小值最大。 首先我们可以知道距离的最小值一定产生于相邻的牛之间,所以要保证相邻牛之间的距离大于等于这个最小值d。所以把牛棚的位置从小到大排序,然后在最小的那个位置先放一头牛,再找下一个牛棚放牛,下一个位置和当前的位置间隔必须大于...
  • secfly
  • secfly
  • 2016-03-25 16:25
  • 324

POJ 2456 Aggressive cows(二分-最大化最小值)

Description 农夫约翰搭了一间有N间牛舍的小屋。牛舍排在一条直线上,第i号牛舍在xi的位置。但是他的M头牛对小屋很不满意,因此经常相互攻击。约翰为了防止牛之间相互伤害,因此决定把每头牛都放在离其他牛尽可能远的牛舍。也就是说要最大化最近的两头牛之间的距离 Input 第一行两个整数N和...
  • V5ZSQ
  • V5ZSQ
  • 2015-07-10 13:23
  • 554

Poj 2456 Aggressive cows

 Poj 2456 Aggressive cows(二分+贪心)题目大意:FJ有一个很长的barn,然后里面有N棚,N个棚在一条直线上,第i个棚的位置为xi.然后他有c只羊,为了防止羊相互攻击,则要找出最大的两只羊之间距离,前提是这c只羊都必须能放下哈。解题思路:先将xi由小到大排序,x...
  • walkaway11
  • walkaway11
  • 2010-10-09 22:27
  • 3416

poj 2456 Aggressive cows(二分查找)

题目链接:http://poj.org/problem?id=2456 题目大意:给你n个坐标,求c个坐标中最小的最大距离。 思路:这题跟poj3273有点是差不多的方法,不过要先把坐标排序,然后用在最短距离跟最大距离之间进行查找,每次二分判断最小距离为mid的个数 code: #include...
  • u010304217
  • u010304217
  • 2014-09-26 21:40
  • 1231

POJ-2456 Aggressive cows

Aggressive cows Time Limit: 1000MS   Memory Limit: 65536K Description Farmer John has built a new long barn, w...
  • u012325552
  • u012325552
  • 2014-03-26 19:24
  • 1153

poj 2456 Aggressive cows - 二分(最大化最小值)

poj 2456 Aggressive cowsFarmer John has built a new long barn, with N (2 <= N <= 100,000) stalls. The stalls are located along a straight line a...
  • ly59782
  • ly59782
  • 2017-04-08 13:52
  • 115

POJ 2456 Aggressive cows(二分查找最大化最小值)

题目链接:http://poj.org/problem?id=2456【中文题意】有n间牛舍,第i间牛舍的位置在xi处。有m头牛,他们对牛舍都不满意,经常互相攻击。为了防止牛之间互相攻击,因此把每头牛放在距离其他牛尽量远的位置。也就是要最大化最近的两头牛之间的距离。 【思路分析】 1.对牛舍的位...
  • qq_32866009
  • qq_32866009
  • 2017-02-02 20:56
  • 170

POJ 2456 Aggressive cows(二分,最大化最小值)

Aggressive cowsTime Limit: 1000MS Memory Limit: 65536KTotal Submissions:17674 Accepted: 8425DescriptionFarmer John has built ...
  • albertluf
  • albertluf
  • 2018-02-09 16:51
  • 5

poj 2456 Aggressive cows,二分,最大化最小值

描述 农夫 John 建造了一座很长的畜栏,它包括N (2 但是,John的C (2 输入 有多组测试数据,以EOF结束。 第一行:空格分隔的两个整数N和C 第二行——第N+1行:分别指出了xi的位置 输出 每组测试数据输出一个整数,满足题意的最大的最小值,注意换行。 样例输入 5 3 1 2 ...
  • yew1eb
  • yew1eb
  • 2014-08-21 09:42
  • 1468

POJ 2456 Aggressive cows(最小值最大化+二分)

http://poj.org/problem?id=2456题意:把C头牛放到N个带有编号的隔间里,使得任意两头牛所在的隔间编号的最小差值最大。例如样例排完序后变成1 2 4 8 9,那么1位置放一头牛,4位置放一头牛,它们的差值为3;最后一头牛放在8或9位置都可以,和4位置的差值分别为4、5,和1...
  • Codeblocksm
  • Codeblocksm
  • 2015-11-14 17:19
  • 244
    个人资料
    • 访问:206429次
    • 积分:7058
    • 等级:
    • 排名:第3873名
    • 原创:522篇
    • 转载:3篇
    • 译文:0篇
    • 评论:12条
    文章分类
    最新评论