112. 雷达设备(贪心/逆向思考)
2024-01-03 18:54:37
题目:
?
输入样例:
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;
}
文章来源:https://blog.csdn.net/asdfghrfh/article/details/135369903
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!