Aggressive cows http://poj.org/problem?id=2456

N间小屋,M头牛,使得牛跟牛之间的距离最远,以防止牛打架。

2<=N<=100000

2<=M<=N

0 <=xi<=109

//////////////////////////////////////////////////////////////

C(d):=可以安排牛的位置使得任意两头牛的间距都不小于d

使用二分搜索法解决:

//参考文献:挑战程序设计大赛(第二版)
/*************************************************************************
> File Name: AggressiveCows_poj2456.cpp
> Author: spzhao
> Mail: spzhaol@163.com
> Created Time: 2015年10月14日 星期三 20时25分30秒
************************************************************************/ #include<iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#define INF 1000000000
using namespace std;
int N,K;
int x[100005]; bool C(int d)
{
int last = 0;
for (int i = 1;i < K;i++)
{
int crt = last+1;                    // 只需要比较K-1次找出最适合的值d来放置K头牛,用last & crt 来表示上一头牛和当前牛的位置
while(crt < N && x[crt] - x[last] < d)
crt++;
if (crt == N) return false;             // 到达最大值N说明d的值小了
last = crt;
}
return true;
}
int main ()
{
cin >> N >> K;
for (int i = 0;i < N;i++)
scanf("%d",&x[i]);
sort(x,x+N);
int l = 0,r = INF;
while(r - l > 1)
{
int mid = (l+r)/2;
if (C(mid))
l = mid;
else
r = mid;
}
printf("%d\n",l);
return 0;
}

  

最大化最小值 Aggressive cows的更多相关文章

  1. 最大化最小值poj2456Aggressive cows

    Aggressive cows Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 15528   Accepted: 7440 ...

  2. poj 2456 Aggressive cows && nyoj 疯牛 最大化最小值 二分

    poj 2456 Aggressive cows && nyoj 疯牛 最大化最小值 二分 题目链接: nyoj : http://acm.nyist.net/JudgeOnline/ ...

  3. 二分法的应用:最大化最小值 POJ2456 Aggressive cows

    /* 二分法的应用:最大化最小值 POJ2456 Aggressive cows Time Limit: 1000MS Memory Limit: 65536K Total Submissions: ...

  4. 二分算法的应用——最大化最小值 POJ2456 Aggressive cows

    Aggressive cows Time Limit: 1000MS Memory Limit: 65536K Total Submissions: Accepted: Description Far ...

  5. POJ - 2456 Aggressive cows 二分 最大化最小值

    Aggressive cows Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 18099   Accepted: 8619 ...

  6. POJ 2456 Aggressive cows

    Aggressive cows Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 11192   Accepted: 5492 ...

  7. POJ_2456_Agressive_cows_(二分,最大化最小值)

    描述 http://poj.org/problem?id=2456 有n个小屋,线性排列在不同位置,m头牛,每头牛占据一个小屋,求最近的两头牛之间距离的最大值. Aggressive cows Tim ...

  8. POJ 2456 Aggressive cows ( 二分搜索)

    题目链接 Description Farmer John has built a new long barn, with N (2 <= N <= 100,000) stalls. The ...

  9. POJ2456(最大化最小值)

    Aggressive cows Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10728   Accepted: 5288 ...

随机推荐

  1. 《Linux多线程服务端编程》笔记——线程同步精要

    并发编程基本模型 message passing和shared memory. 线程同步的四项原则 尽量最低限度地共享对象,减少需要同步的场合.如果确实需要,优先考虑共享 immutable 对象. ...

  2. selenium相关面试题

    selenium中如何判断元素是否存在? selenium中hidden或者是display = none的元素是否可以定位到? selenium中如何保证操作元素的成功率?也就是说如何保证我点击的元 ...

  3. jstree获取整棵树的json数据

    $("#树ID").jstree(true).get_json();

  4. Xamarin 小试牛刀 通知栏消息通知和按钮(基于Java代码人肉转换)

    本示例基于网友现有安卓项目人肉翻译,在Xamarin中替换和修改了很多方法的命名,比如某些属性需要去掉getName的get前缀, 有些方法名称需要使用Pascal命名法替换Java的Camel 命名 ...

  5. WinForm 制作一个简单的计算器

    namespace WindowsFormsApplication6 { public partial class Form1 : Form { //存储上次点击了什么按钮,0代表什么都没有点击,1代 ...

  6. 《Effective C#中文版:改善C#程序的50种方法》读书笔记

    作者: suyan010203  来源: 博客园  发布时间: 2011-07-09 14:47  阅读: 8988 次  推荐: 4                   原文链接   [收藏] 从去 ...

  7. Python系列之heapq内置模块

    heapq 是 python 的内置模块,源码位于 Lib/heapq.py ,该模块提供了基于堆的优先排序算法. 堆的逻辑结构就是完全二叉树,并且二叉树中父节点的值小于等于该节点的所有子节点的值.这 ...

  8. SUI Mobile

    <header class="bar bar-nav"> <h1 class='title'>只有图标的表单</h1> </header& ...

  9. [css 揭秘]:CSS揭秘 技巧(三):背景定位

    我的github地址:https://github.com/FannieGirl/ifannie 源码都在这上面哦! 喜欢的给我一个星吧 背景定位 问题:很多时候,我们想针对容器某个角对背景图片做便宜 ...

  10. 如何在 Windows上编译Objective-C

    Objective-C现在几乎已经变成了苹果的专利了,可以直接在苹果的Xcode上编译Objective-C程序,但是在Windows平台下的编译工具就寥寥无几了,本身这种语言用的人就不是很多.今天在 ...