zoukankan      html  css  js  c++  java
  • 洛谷——P1316 丢瓶盖

    https://www.luogu.org/problem/show?pid=1316

    题目描述

    陶陶是个贪玩的孩子,他在地上丢了A个瓶盖,为了简化问题,我们可以当作这A个瓶盖丢在一条直线上,现在他想从这些瓶盖里找出B个,使得距离最近的2个距离最大,他想知道,最大可以到多少呢?

    输入输出格式

    输入格式:

    第一行,两个整数,A,B。(B<=A<=100000)

    第二行,A个整数,分别为这A个瓶盖坐标。

    输出格式:

    仅一个整数,为所求答案。

    输入输出样例

    输入样例#1:
    5 3
    1 2 3 4 5
    
    输出样例#1:
    2
    

    说明

    限时3秒

    把题目看作是拿走a-b个瓶盖后是剩下的最短距离最小,就变得和跳石头一样了

     1 #include <algorithm>
     2 #include <cstdio>
     3 
     4 using namespace std;
     5 
     6 const int N(100000+15);
     7 int a,b,x[N];
     8 
     9 int l,r,mid,ans;
    10 bool check(int dis)
    11 {
    12     int sum=0,cnt=0;
    13     for(int i=2;i<=a;i++)
    14     {
    15         sum+=x[i]-x[i-1];
    16         if(sum<dis) cnt++;
    17         else sum=0;
    18         if(cnt>a-b) return false;
    19     }
    20     return true;
    21 }
    22 
    23 int main()
    24 {
    25     scanf("%d%d",&a,&b);
    26     for(int i=1;i<=a;i++) scanf("%d",x+i);
    27     sort(x+1,x+a+1);
    28     for(r=x[a]-x[1];l<=r;)
    29     {
    30         mid=l+r>>1;
    31         if(check(mid))
    32         {
    33             l=mid+1;
    34             ans=mid;
    35         }
    36         else r=mid-1;
    37     }
    38     printf("%d",ans);
    39     return 0;
    40 }
    ——每当你想要放弃的时候,就想想是为了什么才一路坚持到现在。
  • 相关阅读:
    【Rust】无关联类型
    【Rust】trait克隆
    【Rust】trait动态返回
    【Rust】trait迭代器
    【Rust】特质trait
    【Rust】运算符重载
    【Rust】trait超集
    【Rust】trait删除
    【Rust】trait实现
    wpf之数据模板 安静点
  • 原文地址:https://www.cnblogs.com/Shy-key/p/7105986.html
Copyright © 2011-2022 走看看