雷达安装c++
2021/9/13 22:05:30
本文主要是介绍雷达安装c++,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
题目描述
假设海岸线是一条无限延伸的直线,它的一侧是陆地,另一侧是海洋,每一座小岛是在海面上的一个点。
雷达必须安装在陆地上(包括海岸线),并且每个雷达都有相同的扫描范围d(半径)。你的任务是建立尽量少的雷达站,使所有小岛都在扫描范围之内。
数据使用笛卡尔坐标系,定义海岸线为x轴。在x轴上方为海洋,下方为陆地。
样例1如图所示
输入格式
第一行包括2个整数n和d,n是岛屿数目,d是雷达扫描范围。
接下来n行为岛屿坐标。
输出格式
一个整数表示最少需要的雷达数目,若不可能覆盖所有岛屿,输出“-1”。
样例输入
3 2 1 2 -3 1 2 1
样例输出
2
问题提示
n≤1000, d≤20000
∣xi∣≤2×10^6 , 0≤yi≤20000
代码如下:
#include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using namespace std; int n,d,ans = 0; int v[1003]; struct node{ int l,r; }a[1003]; bool cmp(node x,node y) { return x.r < y.r; } int main() { scanf("%d%d",&n,&d); for(int i = 1;i <= n;i++) { int x,y; scanf("%d%d",&x,&y); a[i].l = x - sqrt(d*d - y*y); a[i].r = x + sqrt(d*d - y*y); if(y > d){ printf("-1"); exit(0); } } sort(a + 1,a + n + 1,cmp); int q = -9999999; for(int i = 1;i <= n;i++) { if(q < a[i].l) { ans++; q = a[i].r; } } printf("%d",ans); return 0; }
这篇关于雷达安装c++的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-01巧用 TiCDC Syncpoint 构建银行实时交易和准实时计算一体化架构
- 2024-05-01银行核心背后的落地工程体系丨Oracle - TiDB 数据迁移详解
- 2024-04-26高性能表格工具VTable总体构成-icode9专业技术文章分享
- 2024-04-16软路由代理问题, tg 无法代理问题-icode9专业技术文章分享
- 2024-04-16程序猿用什么锅-icode9专业技术文章分享
- 2024-04-16自建 NAS 的方案-icode9专业技术文章分享
- 2024-04-14ansible 在远程主机上执行脚本,并传入参数-icode9专业技术文章分享
- 2024-04-14ansible 在远程主机上执行脚本,并传入参数, 加上remote_src: yes 配置-icode9专业技术文章分享
- 2024-04-14ansible 检测远程主机的8080端口,如果关闭,则echo 进程已关闭-icode9专业技术文章分享
- 2024-04-14result 成功怎么写-icode9专业技术文章分享