Radar Installation
题目链接:http://acm.hust.edu.cn/vjudge/problem/visitOriginUrl.action?id=27586
题意:
在海岸线上摆放雷达并限定雷达覆盖半径d,再以海岸线为轴,给定海上岛屿坐标,求至少需要多少雷达可以覆盖所以岛屿,如果不能输出'-1'。
案例:
Sample Input
3 2
1 2
-3 1
2 1
1 2
0 2
0 0
Sample Output
Case 1: 2Case 2: 1
分析:
可以转换为区间覆盖问题。以岛屿为圆心,雷达扫射半径为半径,求出此圆与x轴(即海岸线)交点坐标,两交点坐标间即为雷达摆放区间(包括两交点(在此区间任意位置摆放雷达均可覆盖岛屿))。接下来即为区间覆盖求解问题了。
源代码:
1 #include<cstdio> 2 #include<cmath> 3 #include<algorithm> 4 using namespace std; 5 int n,num; 6 struct former 7 { 8 double l; 9 double r; 10 }a[1005]; 11 double cmp(former m,former t)//区间排序 12 { 13 if(m.r==t.r) return m.l>t.l; 14 else 15 return m.r<t.r; 16 } 17 void change()//计算所需雷达 18 { 19 int k=0; 20 sort(a,a+n,cmp); 21 for(int j=1;j<n;j++) 22 { 23 if(a[j].l>a[k].r) 24 { 25 num++; 26 k=j; 27 } 28 } 29 } 30 int main() 31 { 32 int cnt=0; 33 double x,y,d; 34 while(scanf("%d%lf",&n,&d)&&n&&d) 35 { 36 num=1; 37 for(int i=0;i<n;i++) 38 { 39 scanf("%lf%lf",&x,&y); 40 if(d<y||d<0)//判断是否有岛屿超出雷达覆盖范围 41 num=-1; 42 a[i].l=x-sqrt(d*d-y*y);//岛屿转换可摆放雷达区间 43 a[i].r=x+sqrt(d*d-y*y); 44 } 45 if(num==-1) 46 printf("Case %d: -1\n",++cnt); 47 else 48 { 49 change(); 50 printf("Case %d: %d\n",++cnt,num); 51 } 52 } 53 return 0; 54 }
转载于:https://www.cnblogs.com/huaszjh/p/4719074.html
Radar Installation相关推荐
- 【贪心】Radar Installation(poj 1328)
Radar Installation poj 1328 题目大意: 在平面直角坐标系的一二象限上有n个小岛,现在让你在x坐标上布置雷达,每个雷达可以侦测以它为原心,半径为m的圆内的所有小岛,现在问侦测 ...
- 【POJ - 1328】Radar Installation(贪心+计算几何)安装雷达辐射岛屿
题干: Assume the coasting is an infinite straight line. Land is in one side of coasting, sea in the ot ...
- POJ Radar Installation 1328(雷达)贪心算法
问题描述 问题链接 Description Assume the coasting is an infinite straight line. Land is in one side of coast ...
- poj 1328 Radar Installation
题目链接:http://poj.org/problem?id=1328 题意: 设x轴为海岸,下方为陆地,上方为海.海上有n个岛屿,现在需要用雷达将所有的岛屿覆盖起来.给定岛屿个数及每个岛屿的坐标,给 ...
- Radar Installation(贪心,sort)
在poj上C++可以AC,但G++不行.杭电上更是好多的TLE,结果把cin改成scanf便可以轻松AC. #include <iostream> #include <algorit ...
- POJ - 1328 Radar Installation(贪心+思维)
题目链接:点击查看 题目大意:校长想通过监控设备覆盖学校内的N座建筑物,每座建筑物被视作一个质点,在笛卡尔坐标系中给出他们的坐标(x,y),并且所有建筑物均处在x轴的上方.因为学校的供电和传输线路均沿 ...
- POJ 1328 Radar Installation【贪心】
POJ 1328 题意: 将一条海岸线看成X轴,X轴上面是大海,海上有若干岛屿,给出雷达的覆盖半径和岛屿的位置,要求在海岸线上建雷达,在雷达能够覆盖全部岛屿情况下,求雷达的最少使用量. 分析: 贪心法 ...
- POJ-1328 Radar Installation 贪心
以每个点算出左右覆盖的雷达所在x轴范围,然后贪心计算出所需圆的个数. 当后一个点的圆心在x轴的左坐标在前一个点的右坐标的右坐标之前,则这个点就会被覆盖. 代码如下:(C++能过,G++ runtime ...
- 【POJ1328】Radar Installation(贪心,决策包容)
problem 平面直角坐标系上有n个点. 在x轴上找尽量少的点,并以这些点为圆心画一个半径为d的圆,使得给定的点都在画出来的圆里. 求最少要画的点数,如果不能输出-1. solution 一.不能的 ...
最新文章
- 逃课上网吧编程、玩摇滚的另类学生,逆袭成长为独角兽公司的 CTO
- k8s 命令 重启_快速入门Kubernetes(K8S)——资源清单
- Acwing第 32 场周赛【完结】
- Linux服务器---关闭selinux
- php画中画,画中画功能 怎么将两个视频叠加播放,制作成画中画效果
- 请求的安全信息不可用或无法显示
- python 调用控制台并获取返回结果_Java调用Python脚本并获取返回值
- 完整性校验用到常见的算法_几种常见的校验算法
- python输出生日程序_Python中:利用七段数码管输出自己的生日及系统当前时间
- VictoriaMetrics入门与实战
- Jquery.Datatables dom表格定位
- 如何删除Linux一个目录下部分类型之外的所有文件的三种方法
- 三相PWM整流器dq解耦控制
- 孩子成长-跟同学相处
- 周期串(Periodic Strings)
- latex里图片大小如何调整_LATEX图片位置调整
- Schizophrenia Bulletin: 精神分裂症的潜在临床-结构维度
- c++ http gzip压缩解压缩
- 吗咿呀嘿-用js来搞个简单的人脸识别
- druid password 加密原生使用