思路:
我们首先可以用勾股定理求出每个建筑如果要使雷达能覆盖到它的范围是多少,然后统计有多少个重合区间就行了
c o d e code code
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
int n;
int k;
int x[1000], y[1000];
struct node
{
double l, r;
}a[1000];
bool cmp(node x, node y)
{
return x.r<y.r;
}
int main()
{
cin>>n>>k;
for(int i=1; i<=n; i++)
{
int yy=k;
scanf("%d%d", &x[i], &y[i]);
if(y[i]>yy)
{
//cout<<y[i]<<' '<<k<<endl;
cout<<-1;
return 0;
}
a[i].l=x[i]-sqrt(yy*yy-y[i]*y[i]);
a[i].r=x[i]+sqrt(yy*yy-y[i]*y[i]);
}
sort(a+1, a+1+n, cmp);
double last=a[1].r;
int m=1;
for(int i=2; i<=n; i++)
{
if(last>=a[i].l)
continue;
else
last=a[i].r, m++;
}
printf("%d", m);
return 0;
}