codeforces 702C Cellular Network 二分
2017-07-13 09:30
288 查看
题意:n个城市,m个蜂窝网络。他们的坐标在一条直线上。且给定的坐标都是从左到右依次给出。问网络的覆盖范围r至少为多大时,能将所有城市包含进去
思路:如果r可以,那么r+1,r+2...都可以。在给定的范围二分,判断每个r是否满足条件。
#include<cstdio>
#include<set>
#include<map>
#include<stack>
#include<string>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long
using namespace std;
const int maxn =1e5;
int a[maxn],b[maxn];
int n,m;
bool check(int r)
{
int cur=0;
for(int i=0;i<m;i++)
{
ll left=b[i]-r;
ll right=b[i]+r;
while(cur<n&&a[cur]>=left&&a[cur]<=right)cur++;
}
if(cur==n)return true;
return false;
}
int main()
{
while(~scanf("%d%d",&n,&m))
{
for(int i=0;i<n;i++)scanf("%d",&a[i]);
for(int i=0;i<m;i++)scanf("%d",&b[i]);
ll l=0,r=(int)2*1e9;
while(l<r)
{
ll mid=(l+r)/2;
if(check(mid))//找最小值
{
r=mid;
}
else
{
l=mid+1;
}
}
printf("%d\n",l);
}
}
思路:如果r可以,那么r+1,r+2...都可以。在给定的范围二分,判断每个r是否满足条件。
#include<cstdio>
#include<set>
#include<map>
#include<stack>
#include<string>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long
using namespace std;
const int maxn =1e5;
int a[maxn],b[maxn];
int n,m;
bool check(int r)
{
int cur=0;
for(int i=0;i<m;i++)
{
ll left=b[i]-r;
ll right=b[i]+r;
while(cur<n&&a[cur]>=left&&a[cur]<=right)cur++;
}
if(cur==n)return true;
return false;
}
int main()
{
while(~scanf("%d%d",&n,&m))
{
for(int i=0;i<n;i++)scanf("%d",&a[i]);
for(int i=0;i<m;i++)scanf("%d",&b[i]);
ll l=0,r=(int)2*1e9;
while(l<r)
{
ll mid=(l+r)/2;
if(check(mid))//找最小值
{
r=mid;
}
else
{
l=mid+1;
}
}
printf("%d\n",l);
}
}
相关文章推荐
- CodeForces - 609D (二分!二分!)
- CodeForces 650B(二分)
- CodeForces 493C C. Vasya and Basketball 二分
- Codeforces 739B Alyona and a tree (树上差分+二分)
- CodeForces 483B Friends and Presents(二分+容斥定理)
- CodeForces 613 B.Skills(二分)
- Codeforces_448D_Multiplication Table(二分答案)
- [codeforces] Gym - 100814D Frozen Rivers (BFS + 二分)
- CodeForces 645 D.Robot Rapping Results Report(二分+dfs)
- codeforces 350 div2 D Magic Powder - 2 二分
- Codeforces 803D Magazine Ad【二分+贪心】
- codeforces 380A A. Sereja and Prefixes(二分)
- Codeforces 607A Chain Reaction 【二分 + dp】
- Codeforces 676C - Vasya and String 详解(二分前缀和+尺取两种写法)
- 【二分答案 && 贪心】codeforces-847E Packmen
- Codeforces 615E Hexagons (Round #338 (Div. 2) E题) 二分答案+找规律
- CodeForces - 808D-J - Array Division -set或者二分
- codeforces 676C C. Vasya and String(二分)
- CodeForces - 780B The Meeting Place Cannot Be Changed(简单二分)
- [二分答案 2-SAT验证 前后缀优化建图] Codeforces 587D #326 (Div. 1) D. Duff in Mafia