无线网络
题目 无线网络
思路分析
找每头牛最近的两个基站
如果发现有一头牛距离两个基站的距离都大于mid(覆盖不到)
就说明mid取小了
代码实现
#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
typedef long long LL;
const int N=1e5+10;
int a[N],b[N];
int n,m;
bool check(int mid){
for(int i=0,j=0;i<n;i++){
while(j+1<m && b[j+1]<=a[i]) j++;
if(abs(a[i]-b[j])>mid){
if(j+1>=m || abs(b[j+1]-a[i])>mid)
return false;
}
}
return true;
}
int main()
{
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cin>>n>>m;
for(int i=0;i<n;i++) cin>>a[i];
for(int i=0;i<m;i++) cin>>b[i];
int l=0,r=2e9;
while(l<r){
int mid=(LL)l+r>>1;
if(check(mid)) r=mid;
else l=mid+1;
}
cout<<r<<endl;
return 0;
}
💬 评论