zoukankan      html  css  js  c++  java
  • 2703 奶牛代理商 XII

    2703 奶牛代理商 XII

     

     时间限制: 1 s
     空间限制: 32000 KB
     题目等级 : 黄金 Gold
     
     
     
    题目描述 Description

     小徐从美国回来后,成为了USACO中国区的奶牛销售代理商,专门出售质优价廉的“FJ”牌奶牛。上题中,小徐终于凑够了钱,把她的小伙伴们接过来。

    现在,她需要给她自己和其他3个伙伴安排房间。在同一直线上有N间房子(2<=N<=10^5),每间房子有一个唯一的位置(即X坐标)Xi。

    (0<=Xi<=10^9)。为了方便交流,请你写一个程序,安排4间房子,使它们的最远距离最短。

    输入描述 Input Description

    第一行:一个正整数N

    第二行:N个正整数,Xi,空格隔开

    输出描述 Output Description

    最短的最远距离

    样例输入 Sample Input

    7

    1 7 4 20 13 2 11

    样例输出 Sample Output

    3(选择1、2、4、7)

    数据范围及提示 Data Size & Hint

    这个。就是二分。

    设f(x)为最远距离为x时能否安排4间房子

    这个函数当然有单调性,所以,果断二分搜索x。

    分类标签 Tags 点此展开 

     
    AC代码:
    #include<cstdio>
    #include<algorithm>
    using namespace std;
    const int N=1e5+10;
    int n,a[N],l,r,mid;
    inline int abs(int x){return x>0?x:-x;}
    bool check(int x){
        int tot=0; 
        for(int i=1;i<=n;i++){
            for(int j=i+1;j<=n;j++){
                if(abs(a[j]-a[i])<=x) if(++tot==4) return 1;
            }
        }
        return 0;
    }
    int main(){
        scanf("%d",&n);
        for(int i=1;i<=n;i++) scanf("%d",a+i),r=max(r,a[i]);
        while(l<r){
            mid=l+r>>1;
            if(check(mid)) r=mid;
            else l=mid+1;
        }
        printf("%d",l);
        return 0;
    }
  • 相关阅读:
    剑指 Offer 05. 替换空格
    28. 实现 strStr()
    67. 二进制求和
    排序算法之二快速排序
    排序算法之一冒泡排序
    将本地文件上传到GitHub
    spring data jpa 操作pipelinedb 的continuous view 与stream
    pipelinedb学习笔记
    PostgreSQL 、springboot 、spring data jpa 集成
    pipelineDB学习笔记-2. Stream (流)
  • 原文地址:https://www.cnblogs.com/shenben/p/5931315.html
Copyright © 2011-2022 走看看