POJ Radar Installation (贪心)
2015-07-31 17:36
330 查看
Radar Installation
Time Limit : 2000/1000ms (Java/Other) Memory Limit : 20000/10000K (Java/Other)Total Submission(s) : 34 Accepted Submission(s) : 15
[align=left]Problem Description[/align]
Assume the coasting is an infinite straight line. Land is in one side of coasting, sea in the other. Each small island is a point locating in the sea side. And any radar installation, locating on the coasting, can only cover d distance,
so an island in the sea can be covered by a radius installation, if the distance between them is at most d.
We use Cartesian coordinate system, defining the coasting is the x-axis. The sea side is above x-axis, and the land side below. Given the position of each island in the sea, and given the distance of the coverage of the radar installation, your task is to write
a program to find the minimal number of radar installations to cover all the islands. Note that the position of an island is represented by its x-y coordinates.
Figure A Sample Input of Radar Installations
[align=left]Input[/align]
The input consists of several test cases. The first line of each case contains two integers n (1<=n<=1000) and d, where n is the number of islands in the sea and d is the distance of coverage of the radar installation. This is followed
by n lines each containing two integers representing the coordinate of the position of each island. Then a blank line follows to separate the cases.
The input is terminated by a line containing pair of zeros
[align=left]Output[/align]
For each test case output one line consisting of the test case number followed by the minimal number of radar installations needed. "-1" installation means no solution for that case.
[align=left]Sample Input[/align]
3 2
1 2
-3 1
2 1
1 2
0 2
0 0
[align=left]Sample Output[/align]
Case 1: 2
Case 2: 1
大意:以海岸为x轴,x轴上方有一些小岛,然后给出雷达扫描范围及小岛坐标,然后求出能使用的最少雷达数,其实大意和喷水装置差不多。
刚开始没看到那个是陆地,(汗- -!,想了一大会才看到land,(汗= =!
把每个岛求出其雷达能放置的范围,然后检查后面的小岛是否能被这个雷达扫描到,如果不能,则说明要放置新的雷达。
ac代码:
#include<stdio.h> #include<string.h> #include<iostream> #include<math.h> #include<algorithm> #define MAXN 1010 using namespace std; struct s { double x; double y; }d[MAXN]; bool cmp(s a,s b) { if(a.x==b.x) return a.y>b.y; return a.x<b.x; } int main() { int m,n,i; double s,really; int sum=0; int a,b; while(scanf("%d%d",&n,&m)!=EOF,m||n) { int bz=0; for(i=0;i<n;i++) { scanf("%d%d",&a,&b); d[i].x=double(a)-sqrt(double(m*m-b*b));//记录范围 d[i].y=double(a)+sqrt(double(m*m-b*b)); if(b>m) bz=1; } if(bz) printf("-1\n"); else { sort(d,d+n,cmp); double really=d[0].y; int num=1; for(i=1;i<n;i++) { if(d[i].x>really) { num++; really=d[i].y; } } printf("Case %d: %d\n",++sum,num); } } return 0; }
相关文章推荐
- PHP 的“魔术常量”
- iOS学习开发2:UIView和UIWindow
- leetcode: 4Sum
- mongo 日记
- iOS开发new与alloc/init的区别
- socket中read、write、send、recv函数的比较
- Java分层架构
- VC Export DLL 相关知识
- iOS获取当前的位置
- iOS开发new与alloc/init的区别
- hdu5335(搜索)
- kindeditor在dialog弹出框,无法编辑,不能获取焦点
- LINUX 串口编程
- 关于增大oracle表空间的方法
- PHP 的“魔术常量”
- java中二叉树的创建以及几个常用的函数
- JS获取单选框选中的值
- 十六进制字节流与字符串的转换
- POJ 2337 && ZOJ 1919--Catenyms 【有向图 && 欧拉路判断 && 欧拉路径】
- 【转自】Missing artifact com.sun:tools:jar 1.5.0 终极解决方法