雷达安装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-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享