题解 | #愤怒的牛#

愤怒的牛

https://ac.nowcoder.com/acm/problem/50171

思路

先将所有牛按位置排序。随后二分间隔的最大值。check的时候如果位置不够加了,那么需要的间隔就加。

代码

#include<bits/stdc++.h>
#define debug(x) cout<<"x="<<x<<endl
#define int long long
using namespace std;
const int maxn=1e5+7;
const int mod=1e9+7;
typedef long long ll;

//ifstream mycin("in.txt");
//ofstream mycout("out.txt");

inline void read(int &data){
    int x=0,f=1;char ch=getchar();
    while(ch<'0'||ch>'9'){if(ch=='-') f=f*-1;ch=getchar();}
    while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
    data=x*f;
}

int n,m,a[maxn];

bool check(int x){
    int num=1,now=a[1],idx=1;
    for(int i=2;i<=n;i++){
        if(a[i]-a[idx]>=x) num++,idx=i;
    }
    if(num>=m) return true;
    else return false;
}

signed main(){
    read(n);read(m);
    for(int i=1;i<=n;i++) read(a[i]);
    sort(a+1,a+1+n);
    int l=0,r=1e9+7,mid;
    while(r-l>1){
        mid=l+r>>1;
        if(check(mid)) l=mid;
        else r=mid; 
    }
    cout<<l<<endl;
    return 0;
}

全部评论

相关推荐

1 1 评论
分享
正在热议
# 牛客帮帮团来啦!有问必答 #
1151355次浏览 17149人参与
# 通信和硬件还有转码的必要吗 #
11200次浏览 101人参与
# OPPO开奖 #
19197次浏览 267人参与
# 和牛牛一起刷题打卡 #
18946次浏览 1635人参与
# 实习与准备秋招该如何平衡 #
203361次浏览 3625人参与
# 大厂无回复,继续等待还是奔赴小厂 #
4970次浏览 30人参与
# 不去互联网可以去金融科技 #
20343次浏览 255人参与
# 通信硬件薪资爆料 #
265887次浏览 2484人参与
# 国企是理工四大天坑的最好选择吗 #
2220次浏览 34人参与
# 互联网公司评价 #
97677次浏览 1280人参与
# 简历无回复,你会继续海投还是优化再投? #
25035次浏览 354人参与
# 0offer是寒冬太冷还是我太菜 #
454843次浏览 5124人参与
# 国企和大厂硬件兄弟怎么选? #
53898次浏览 1012人参与
# 参加过提前批的机械人,你们还参加秋招么 #
14644次浏览 349人参与
# 硬件人的简历怎么写 #
82285次浏览 852人参与
# 面试被问第一学历差时该怎么回答 #
19395次浏览 213人参与
# 你见过最离谱的招聘要求是什么? #
28073次浏览 248人参与
# 学历对求职的影响 #
161229次浏览 1804人参与
# 你收到了团子的OC了吗 #
538690次浏览 6386人参与
# 你已经投递多少份简历了 #
344192次浏览 4963人参与
# 实习生应该准时下班吗 #
96968次浏览 722人参与
# 听劝,我这个简历该怎么改? #
63519次浏览 622人参与
牛客网
牛客企业服务