题目:
112. 雷达设备 - AcWing题库
输入样例:
3 2
1 2
-3 1
2 1
输出样例:
2
思路:
代码:
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include<cmath>
using namespace std;
const int N=100010;
struct interval//将雷达扫岛逆向考虑-->可覆盖该岛的雷达位置区间(二维变一维)
{double l,r;bool operator<(const interval& rhs){return r<rhs.r;}
}interval[N];
int main()
{int n,Len;cin>>n>>Len;int x,y;double len=0;for(int i=0;i<n;i++){scanf("%d%d",&x,&y);if(abs(y)>Len){cout<<"-1";return 0;}//表示该岛无法被任何位置的雷达扫到len=sqrt(abs(Len*Len-y*y));interval[i].l=x-len;interval[i].r=x+len;}sort(interval,interval+n);//按照区间右值排序int cnt=1;double pr=interval[0].r;for(int i=1;i<n;i++){if(pr<interval[i].l){pr=interval[i].r;cnt++;}}cout<<cnt;
}