1.Link:

http://poj.org/problem?id=1328

http://bailian.openjudge.cn/practice/1328/

2.Content:

Radar Installation
Time Limit: 1000MS   Memory Limit: 10000K
Total Submissions: 52833   Accepted: 11891

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

3.Method:

(1)求出每个岛能够安装灯塔的区域,用结构体表示Lines

(2)根据最右快排,这里要尤其注意double类型的compare怎么写

(3)贪心算法求最小灯塔数量

4.Code:

#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstdlib>

using namespace std;

struct LINE
{
    double l;
    double r;
};

int cmp(const void *a,const void *b)
{
    LINE line1 = *((LINE *)a);
    LINE line2 = *((LINE *)b);
    /*if(line1.r == line2.r)
    {
        if(line1.l == line2.l) return 0;
        return line1.l > line2.l ? 1 : -1;    
    }    
    else return line1.r > line2.r ? 1 : -1;*/
    if(line1.r == line2.r) return 0;
    else return line1.r > line2.r ? 1 : -1;
}

int main()
{
    //freopen("D://input.txt", "r", stdin);

int i;

int n,d;
    int count = 1;
    int x,y;
    int flag;
    double ins;
    
    cin >> n >> d;
    while(n!= 0 || d != 0)
    {

LINE *lines = new LINE[n];

flag = 1;
        for(i = 0; i < n; ++i)
        {
            cin>>x>>y;
            if(d < y) flag = 0;
            else
            {
                ins = sqrt(d * d - y * y);
                lines[i].l = x - ins;
                lines[i].r = x + ins;
            }
        }

if(flag == 0) cout<<"Case "<< (count++) <<": -1"<<endl;
        else
        {
            qsort(lines,n,sizeof(LINE),cmp);
            
            /*for(i = 0; i < n; ++i)
            {
                cout << lines[i].l << " " << lines[i].r << endl;
            }*/
            
            int num = 1;
            double max_r = lines[0].r;
            for(i = 1; i < n; ++i)
            {
                if(max_r < lines[i].l)
                {
                    num++;
                    max_r = lines[i].r;
                }
            }
            cout << "Case " << (count++) << ": " << num <<endl;
        }
                
        delete [] lines;
        
        cin >> n >> d;
    }

//fclose(stdin);
    return 0;
}

5:Reference:

http://blog.sina.com.cn/s/blog_48f85e1d0100nslz.html

Poj 1328 / OpenJudge 1328 Radar Installation的更多相关文章

  1. 贪心 POJ 1328 Radar Installation

    题目地址:http://poj.org/problem?id=1328 /* 贪心 (转载)题意:有一条海岸线,在海岸线上方是大海,海中有一些岛屿, 这些岛的位置已知,海岸线上有雷达,雷达的覆盖半径知 ...

  2. poj 1328 Radar Installation (简单的贪心)

    Radar Installation Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 42925   Accepted: 94 ...

  3. POJ 1328 Radar Installation 贪心 A

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

  4. poj 1328 Radar Installation(nyoj 287 Radar):贪心

    点击打开链接 Radar Installation Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 43490   Accep ...

  5. poj 1328 Radar Installation【贪心区间选点】

    Radar Installation Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 20000/10000K (Java/Other) ...

  6. poj 1328 Radar Installation(贪心)

    Description Assume the coasting is an infinite straight line. Land is in one side of coasting, sea i ...

  7. Radar Installation(POJ 1328 区间贪心)

    Radar Installation Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 68578   Accepted: 15 ...

  8. Radar Installation POJ - 1328

    Assume the coasting is an infinite straight line. Land is in one side of coasting, sea in the other. ...

  9. Radar Installation POJ - 1328(贪心)

    Assume the coasting is an infinite straight line. Land is in one side of coasting, sea in the other. ...

随机推荐

  1. 详解Android Handler的使用-别说你不懂handler

    我们进行Android开发时,Handler可以说是使用非常频繁的一个概念,它的用处不言而喻.本文就详细介绍Handler的基本概念和用法. Handler的基本概念         Handler主 ...

  2. iOS开发——设备篇Swift篇&判断设备类型

    判断设备类型   1,分割视图控制器(UISplitViewController) 在iPhone应用中,使用导航控制器由上一层界面进入下一层界面. 但iPad屏幕较大,通常使用SplitViewCo ...

  3. web开发技术点解析

    一.控件篇 1.radio控件 在创建单选控件时,要做到多个radio有单选功能.必须把多个radio的name属性值设置为同样的,否则,多个radio之间是没有联系的. 二.样式篇 1.获取图片中的 ...

  4. Error creating bean with name &#39;menuController&#39;: Injection of autowired dependency……

    出现了一大串错误 Error creating bean with name 'userController': Injection of autowired dependencies failed. ...

  5. Metadata Lock原理2

    同事说开发机更改一个表结构,加字段,但是一直挂在那里,没反应.一开始以为表测试数据量很大,因为mysql增加表字段会重写表,后来看了下数据量很小,就另外查看过程.原因分析和处理如下:  一.环境  m ...

  6. PowerDesigner自定义列和过滤器

    好多次要增加注释列,默认值列都忘了怎么设置,写下来以备后用:) 选中表,然后右键,选择properties->columns->点击下图中那个不显眼的小图标(Customize Colum ...

  7. Eclipse配置C/C++开发环境

    开发环境:Eclipse3.2.CDT3.1.MinGW5.1 1.Eclipse及CDT的安装到Eclipse的官方网站http://www.eclipse.org上下载Eclipse.安装CDT. ...

  8. C# 之 无法嵌入互操作类型(Word 或 Excel 操作)

    Microsoft.Office.Interop.Excel.Application eApp = new Microsoft.Office.Interop.Excel.ApplicationClas ...

  9. 渐进式jpeg(progressive jpeg)图片及其相关 --图片的两种加载方式

    渐进式jpeg(progressive jpeg)图片及其相关   一.基本JPEG(baseline jpeg)和渐进JPEG 网络上那些色色的照片都是.jpg格式的("色色"指 ...

  10. MYSQL基础笔记(六)- 数据类型一

    数据类型(列类型) 所谓数据烈性,就是对数据进行统一的分类.从系统角度出发时为了能够使用统一的方式进行管理,更好的利用有限的空间. SQL中讲数据类型分成三大类:1.数值类型,2.字符串类型和时间日期 ...