Radar Installation
Time Limit: 1000MS   Memory Limit: 10000K
Total Submissions: 54593   Accepted: 12292

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

Source

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <algorithm> #define maxn 1010
using namespace std; struct Node {
double u, v;
friend bool operator<(const Node& a, const Node& b) {
return a.u < b.u;
}
} E[maxn];
int N, D; int main() {
int i, ok, id, ans, cas = 1;
double x, y, d, flag;
while(scanf("%d%d", &N, &D), N) {
printf("Case %d: ", cas++);
ok = 1; id = 0;
for(i = 0; i < N; ++i) {
scanf("%lf%lf", &x, &y);
if(y > D) ok = 0;
if(!ok) continue;
d = sqrt(D * D - y * y);
E[id].u = x - d;
E[id++].v = x + d;
} if(!ok) {
printf("-1\n");
continue;
} sort(E, E + id); flag = E[0].v; ans = 1;
for(i = 1; i < N; ++i) {
if(E[i].u <= flag) {
if(E[i].v <= flag) flag = E[i].v;
continue;
}
++ans; flag = E[i].v;
} printf("%d\n", ans);
}
return 0;
}

POJ1328 Radar Installation 【贪心&#183;区间选点】的更多相关文章

  1. poj1328 Radar Installation —— 贪心

    题目链接:http://poj.org/problem?id=1328 题解:区间选点类的题目,求用最少的点以使得每个范围都有点存在.以每个点为圆心,r0为半径,作圆.在x轴上的弦即为雷达可放置的范围 ...

  2. UVALive 2519 Radar Installation 雷达扫描 区间选点问题

    题意:在坐标轴中给出n个岛屿的坐标,以及雷达的扫描距离,要求在y=0线上放尽量少的雷达能够覆盖全部岛屿. 很明显的区间选点问题. 代码: /* * Author: illuz <iilluzen ...

  3. POJ1328 Radar Installation(贪心)

    题目链接. 题意: 给定一坐标系,要求将所有 x轴 上面的所有点,用圆心在 x轴, 半径为 d 的圆盖住.求最少使用圆的数量. 分析: 贪心. 首先把所有点 x 坐标排序, 对于每一个点,求出能够满足 ...

  4. [POJ1328]Radar Installation

    [POJ1328]Radar Installation 试题描述 Assume the coasting is an infinite straight line. Land is in one si ...

  5. POJ - 1328 Radar Installation(贪心区间选点+小学平面几何)

    Input The input consists of several test cases. The first line of each case contains two integers n ...

  6. POJ--1328 Radar Installation(贪心 排序)

    题目:Radar Installation 对于x轴上方的每个建筑 可以计算出x轴上一段区间可以包含这个点 所以就转化成 有多少个区间可以涵盖这所有的点 排序之后贪心一下就ok 用cin 好像一直t看 ...

  7. zoj1360/poj1328 Radar Installation(贪心)

    对每个岛屿,能覆盖它的雷达位于线段[x-sqrt(d*d-y*y),x+sqrt(d*d+y*y)],那么把每个岛屿对应的线段求出来后,其实就转化成了经典的贪心法案例:区间选点问题.数轴上有n个闭区间 ...

  8. POJ1328——Radar Installation

    Radar Installation Description Assume the coasting is an infinite straight line. Land is in one side ...

  9. POJ 1328 Radar Installation 贪心 A

    POJ 1328 Radar Installation https://vjudge.net/problem/POJ-1328 题目: Assume the coasting is an infini ...

随机推荐

  1. 【原创】配置Windows Live Writer,写cnblogs博客

    20180115更新补充: 现在live writer已经改名open live writer了,需要去下载的到地址:http://openlivewriter.org/ 引言 以前写博客一般都是联网 ...

  2. JDK7集合框架源码阅读(四) LinkedHashMap

    基于版本jdk1.7.0_80 java.util.LinkedHashMap 代码如下 /* * Copyright (c) 2000, 2010, Oracle and/or its affili ...

  3. Xamarin XAML语言教程使用属性设置进度条的当前进度

    Xamarin XAML语言教程使用属性设置进度条的当前进度 在图12.19~12.21中我们看到的是没有实现加载的进度条,即进度条的当前进度为0,如果开发者想要修改当前进度,可以使用两种方式:一种是 ...

  4. POJ 3041 Asteroids (二分图匹配)

    [题目链接] http://poj.org/problem?id=3041 [题目大意] 一个棋盘上放着一些棋子 每次操作可以拿走一行上所有的棋子或者一列上所有的棋子 问几次操作可以拿完所有的棋子 [ ...

  5. [COCI2015]FUNGHI

    题目大意: 一个环上有8个数,从中选取连续的4个数使得和最大,求最大的和. 思路: 模拟. #include<cstdio> #include<cctype> #include ...

  6. hdu 4826 Labyrinth DP

    题目链接:HDU - 4826 度度熊是一只喜欢探险的熊,一次偶然落进了一个m*n矩阵的迷宫,该迷宫只能从矩阵左上角第一个方格开始走,只有走到右上角的第一个格子才算走出迷宫,每一次只能走一格,且只能向 ...

  7. How to copy projects into workspace of eclipse after importing the project?

    在eclipse中如果已经导入了一个别处的项目但导入时没有选“copy projects into workspace”怎么办? 答案是删掉该项目重新导入... http://stackoverflo ...

  8. WPF中的DesignMode判断

    WPF中提供你一个类似WinForm的DesignMode属性的方法来判断当前是否处于设计器模式: bool IsInDesignMode    {        get { return Desig ...

  9. JAVA常见算法题(十五)

    package com.xiaowu.demo; /** * * 输入三个整数x,y,z,请把这三个数由小到大输出. * * @author WQ * */ public class Demo15 { ...

  10. Visio文件转EPS文件

    Visio转eps by gaihf@水木 看了前人写的关于Visio转EPS的文章,但是实践过程中还是碰到几个棘手的问题.现在这些问题终于解决了,把自己的一点体会分享给大家. 很多人习惯用Visio ...