题目链接:http://poj.org/problem?id=1328

  题意:

    设x轴为海岸,下方为陆地,上方为海。海上有n个岛屿,现在需要用雷达将所有的岛屿覆盖起来。给定岛屿个数及每个岛屿的坐标,给定雷达覆盖半径,求覆盖所有岛屿所需雷达最小数。(PS:雷达只能安置在海岸上)

    设将雷达建在每个岛屿上,求出覆盖海岸的区间。将这些区间以左端点从小到大排序,采用贪心策略。先将雷达建在左端区间的右端点上,看雷达是否能覆盖到下一区间,若能,更新此雷达建设点为两区间右端点的最小值(保证雷达能覆盖所有遍历过的区间);若不能,则只能增加雷达个数,并将建设点选为下一区间右端点。

    WA了好多次,TLE了好多次,而且原因都很脑残:WA是因为current的类型设为了int;TLE是因为忘了注释掉文件读取...

代码:

#include<iostream>
#include<cstdlib>
#include<cmath>
#include<fstream>
using namespace std ;

struct mid{
    double l, r ;
}id[1010] ;             //岛上雷达可覆盖区间
int cmp(const void* x,const void* y){
    return  (*(mid *)x).l < (*(mid *)y).l ? -1 : 1 ;
}
int main(){
    int n, d, i, j=1, count ;
    double x, y, current ;
    bool b ;
    while(true){
        cin >> n >> d ;
        if(n==0&&d==0)  break ;
        b = true ;
        for(i=0; i<n; i++){
            cin >> x >> y ;
            if(d<y) b = false ;
            else{
                id[i].l = x - sqrt(1.0*d*d-y*y) ;
                id[i].r = x + sqrt(1.0*d*d-y*y) ;
            }
        }
        if(d<=0||!b){                   //有不能覆盖到的岛屿则输出-1
            cout << "Case " << j++ << ": -1" << endl ;
            continue ;
        }
        if(n==1){                       //一个岛屿只需一个雷达覆盖
            cout << "Case " << j++ << ": 1" << endl ;
            continue ;
        }
        qsort(id, n, sizeof(id[0]), cmp) ;//结构体一级排序,从小到大
        count = 1 ;
        current = id[0].r ;
        for(i=1; i<n; i++){
            if(id[i].l>current){
                count ++ ;
                current = id[i].r ;
            }
            else{
                if(id[i].r<current) current = id[i].r ; //若右端点小于当前雷达建设点,更新current为小值
            }
        }
        cout << "Case " << j++ << ": " << count << endl ;
    }
    return 0 ;
}

转载于:https://www.cnblogs.com/xiaolongchase/archive/2011/09/05/2168156.html

poj 1328 Radar Installation相关推荐

  1. POJ 1328 Radar Installation【贪心】

    POJ 1328 题意: 将一条海岸线看成X轴,X轴上面是大海,海上有若干岛屿,给出雷达的覆盖半径和岛屿的位置,要求在海岸线上建雷达,在雷达能够覆盖全部岛屿情况下,求雷达的最少使用量. 分析: 贪心法 ...

  2. POJ - 1328 Radar Installation(贪心+思维)

    题目链接:点击查看 题目大意:校长想通过监控设备覆盖学校内的N座建筑物,每座建筑物被视作一个质点,在笛卡尔坐标系中给出他们的坐标(x,y),并且所有建筑物均处在x轴的上方.因为学校的供电和传输线路均沿 ...

  3. 【贪心】Radar Installation(poj 1328)

    Radar Installation poj 1328 题目大意: 在平面直角坐标系的一二象限上有n个小岛,现在让你在x坐标上布置雷达,每个雷达可以侦测以它为原心,半径为m的圆内的所有小岛,现在问侦测 ...

  4. 【POJ - 1328】Radar Installation(贪心+计算几何)安装雷达辐射岛屿

    题干: Assume the coasting is an infinite straight line. Land is in one side of coasting, sea in the ot ...

  5. POJ Radar Installation 1328(雷达)贪心算法

    问题描述 问题链接 Description Assume the coasting is an infinite straight line. Land is in one side of coast ...

  6. 贪心算法—建立雷达(POJ 1328)

    贪心算法--区间选点问题 这也是贪心算法的经典问题,一般情况为:有n个闭区间[ai,bj],取尽量少的点,使得每个区间内都至少有一个点. 分析 如果区间i内已经有一个点被取到,则称此区间已经被满足. ...

  7. 雷达装置 (POJ 1328/ codevs 2625)题解

    [问题描述] 假定海岸线是一条无限延伸的直线,陆地在海岸线的一边,大海在另一侧.海中有许多岛屿,每一个小岛我们可以认为是一个点.现在要在海岸线上安装雷达,雷达的覆盖范围是d,也就是说大海中一个小岛能被 ...

  8. Radar Installation(贪心,sort)

    在poj上C++可以AC,但G++不行.杭电上更是好多的TLE,结果把cin改成scanf便可以轻松AC. #include <iostream> #include <algorit ...

  9. Radar Installation

    题目链接:http://acm.hust.edu.cn/vjudge/problem/visitOriginUrl.action?id=27586 题意: 在海岸线上摆放雷达并限定雷达覆盖半径d,再以 ...

最新文章

  1. java切面不需要接口了吗_使用java语言,如何对一个类中的静态方法做切面编程?...
  2. spring-data-jpa Specification构建动态ql
  3. 实现threadlocal_ThreadLocal如何实现?
  4. vs2019使用sqlite数据库远程连接linux
  5. 【redis】redis应用场景,缓存的各种问题
  6. 《Android和PHP开发最佳实践》一1.3 如何学习Android和PHP
  7. Linux上使用Cron启动定时任务
  8. Docker详解(十四)——Docker网络类型详解
  9. learning linux
  10. 最新JMeter面试题,紧扣面试实际要求,看完拿下20K
  11. 【车标识别】基于SIFT算子的车标识别算法matlab仿真
  12. android关机铃声代码,android系统添加关机铃声
  13. 抽象工厂模式(Abstract Factory Pattern)
  14. 【技法操作】UI界面设计教程,用PS绘制计算器页面
  15. 一文读懂APS系统的核心算法和数学理论
  16. 怎么恢复永久删除的文件
  17. TIMIT dataset - The DARPA TIMIT Acoustic-Phonetic Continuous Speech Corpus
  18. discuz网站没备案无执照接入支付宝充值功能
  19. creator 物理画线
  20. 如何固定Excel的表头和列(滚动时始终显示表头和首列)

热门文章

  1. Visual Studio 2013 中如何设置断点
  2. IIS支持http协议的:put、delete等方法
  3. 查找(三)——基于平衡二叉树的查找(对排序二叉树的改进)
  4. javascript中的constructor
  5. Linux下定时切割Mongodb数据库日志并删除指定天数前的日志记录(转)
  6. Tian Ji -- The Horse Racing
  7. 关于创建Custom Container View Controller
  8. Android 软键盘按键监控
  9. android movie studio 下载,Movie Studio+ Video Editor
  10. b+树时间复杂度_深入理解数据库系统之存储存引擎(二叉搜索树)