博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdoj Radar Installation
阅读量:5316 次
发布时间:2019-06-14

本文共 2237 字,大约阅读时间需要 7 分钟。

Problem Description
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
 
Input
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
 
Output
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.
 
Sample Input
 
3 2 1 2 -3 1 2 1 1 2 0 2 0 0
 
Sample Output
 
Case 1: 2 Case 2: 1
#include
#include
#include
using namespace std;struct node{ float l,r,x,y;}d[1100];int cmp(node x,node y){ return x.l
n) { flog=0;break; } else { d[i].l=d[i].x-sqrt(n*n-d[i].y*d[i].y);/*求出雷达的扫描区域*/ d[i].r=d[i].x+sqrt(n*n-d[i].y*d[i].y); } } printf("Case %d: ",Case); if(flog==0) printf("-1\n"); else { int sign=0;num=0; sort(d,d+m,cmp); num++;sign=d[0].r;/*这个很重要,sign始终标记雷达所能扫描的最右端*/ for(i=1;i
sign) { num++;sign=d[i].r; } } printf("%d\n",num); } } return 0;}

转载于:https://www.cnblogs.com/playboy307/p/5273858.html

你可能感兴趣的文章
centos安装禅道的步骤
查看>>
idea用法
查看>>
Sharepoint Designer 2007 Workflow
查看>>
项目共享协调机制
查看>>
diff和patch工具使用(转)
查看>>
【agc004f】Namori Grundy
查看>>
算法61---两个字符串的最小ASCII删除和【动态规划】
查看>>
JAVA多线程之先行发生原则
查看>>
uWSGI基础攻略
查看>>
Java异常处理教程
查看>>
内置数据类型
查看>>
一些部署django用到的linux命令
查看>>
#if defined(__cplusplus)
查看>>
018.Zabbix维护时间和模板导入
查看>>
Apache并发处理模块
查看>>
Servlet异常
查看>>
菜鸟学习MVC实录:弄清项目各类库的作用和用法
查看>>
day32
查看>>
Binding在WPF中的使用
查看>>
软件测试技术第二次作业——程序错误的判断
查看>>