博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 2456 编程技巧之------二分查找思想的巧妙应用
阅读量:4664 次
发布时间:2019-06-09

本文共 1487 字,大约阅读时间需要 4 分钟。

Aggressive cows
Time Limit: 1000MS   Memory Limit: 65536K
Total Submissions: 18599   Accepted: 8841

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 312849

Sample Output

3

#include<stdio.h>
#include<algorithm>
#include<math.h>
using namespace std;
#define INF 999999999
const int MAX_N=100005;
int N,M;
int x[MAX_N];
//判断是否满足条件
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=INF;
    int mid;
    while(ub-lb>1)
    {
        mid=(lb+ub)/2;
        if(C(mid))lb=mid;
        else ub=mid;
    }
    printf("%d\n",lb);
}
int main()
{
    //freopen("C://Users/Administrator/Desktop/acm.txt","r",stdin);
    scanf("%d%d",&N,&M);
    for(int i=0;i<N;i++)
    {
        scanf("%d",&x[i]);
    }
    solve();
    return 0;
}

转载于:https://www.cnblogs.com/linruier/p/9485188.html

你可能感兴趣的文章
C#深入浅出 继承(六)
查看>>
20180925-6 四则运算试题生成
查看>>
mysql报错显示法文解决办法
查看>>
人生永远没有太晚的开始(个人文章)
查看>>
服务器初识、linux安装、linux初识
查看>>
vim+软件安装——06
查看>>
[转]Netty初探
查看>>
HDU-4143 A Simple Problem
查看>>
什么是协程?
查看>>
mybatis动态SQL--传入参数为集合,数组类型
查看>>
二分查找(BinarySearch)
查看>>
ACM Minimum Inversion Number 解题报告 -线段树
查看>>
提示constructor无法location的原因
查看>>
【JavaScript】 闭包 我战战兢兢的接触了它
查看>>
easyui datagrid 去除单击行选中事件
查看>>
windows 环境下搭建django 错误分析总结
查看>>
恩,让我们来看一下你的布局8!
查看>>
回退Ubuntu记录
查看>>
cmd命令往MySQL数据库提交数据
查看>>
configure & make & make install
查看>>