雷达设备

  • 1.题目
  • 2.基本思想
  • 3.代码实现

1.题目

假设海岸是一条无限长的直线,陆地位于海岸的一侧,海洋位于另外一侧。

每个小岛都位于海洋一侧的某个点上。

雷达装置均位于海岸线上,且雷达的监测范围为 d,当小岛与某雷达的距离不超过 d时,该小岛可以被雷达覆盖。

我们使用笛卡尔坐标系,定义海岸线为 x 轴,海的一侧在 x轴上方,陆地一侧在 x 轴下方。

现在给出每个小岛的具体坐标以及雷达的检测范围,请你求出能够使所有小岛都被雷达覆盖所需的最小雷达数目。

输入格式
第一行输入两个整数 n和 d,分别代表小岛数目和雷达检测范围。

接下来 n 行,每行输入两个整数,分别代表小岛的 x,y轴坐标。

同一行数据之间用空格隔开。

输出格式
输出一个整数,代表所需的最小雷达数目,若没有解决方案则所需数目输出 −1。

数据范围
1 ≤ n ≤ 1000 1≤n≤1000 1≤n≤1000,
− 1000 ≤ x , y ≤ 1000 −1000≤x,y≤1000 −1000≤x,y≤1000

输入样例:

3 2
1 2
-3 1
2 1

输出样例:

2

2.基本思想

贪心 O(nlogn)

如下图所示,对于任意一个小岛 (x,y)我们都可以在海岸线上求出能覆盖该小岛的建造雷达的区间 [a,b]


由勾股定理可知:

将所有小岛转化成区间后,问题转化为:给定 n 个区间,在 x 轴上选择尽量少的点,使得所有区间至少包含一个点。

算法步骤:

  • 1.将所有区间按右端点从小到大排序;
    1. 依次考虑每个区间:
      如果当前区间包含最后一个选择的点,则直接跳过;
      如果当前区间不包含最后一个选择的点,则在当前区间的右端点的位置选一个新的点;

3.代码实现

import java.util.Arrays;
import java.util.Scanner;public class Main {static Scanner sc = new Scanner(System.in);static int N = 1010;static Pair seg[] = new Pair[N];static double esp = 10e-6;static class Pair implements Comparable<Pair> {double l, r;public Pair(double l, double r) {this.l = l;this.r = r;}@Overridepublic int compareTo(Pair o) {return Double.compare(this.r, o.r);}}public static void main(String[] args) throws Exception {int n = sc.nextInt();//小岛数int d = sc.nextInt();//雷达半径for (int i = 1; i <= n; i++) {int x = sc.nextInt();int y = sc.nextInt();if (y > d) {System.out.println("-1");return;}double len = Math.sqrt(d * d - y * y);//每个岛 投射到x轴上的左、右端点seg[i] = new Pair(x - len, x + len);}//对所有区间 排序Arrays.sort(seg, 1, n + 1);int res = 0;double lastNode = Integer.MIN_VALUE;  //上一个雷达位置//以上一个点的右端点 判断是否在当前区间的左端点内for (int i = 1; i <= n; i++) {if (seg[i].l > lastNode) {   //下一段区间的起始点在上一个雷达的右边 即没有交集 则需要加入新的雷达res++;lastNode = seg[i].r;//更新}}System.out.println(res);}
}

Acwing---112.雷达设备相关推荐

  1. 112. 雷达设备【贪心】

    呢么问题就变成了区间合并问题.给我们n给区间将相交的区间合并求不相交的区间个数. #include<bits/stdc++.h> using namespace std; typedef ...

  2. 【蓝桥杯专题】 贪心(C++ | 洛谷 | acwing | 蓝桥)

    菜狗现在才开始备战蓝桥杯QAQ 文章目录 [蓝桥杯专题] (C++ | 洛谷 | acwing | 蓝桥) 1055. 股票买卖 II AcWing 104. 货仓选址 传递糖果 AcWing 112 ...

  3. AcWing蓝桥杯AB组辅导课07、贪心

    文章目录 前言 一.贪心 模板题 例题1:AcWing 104. 货仓选址(贪心,简单,算法竞赛进阶指南) 分析 题解:贪心思路 例题 例题1:AcWing 1055. 股票买卖 II(贪心.状态机, ...

  4. ACwing算法基础课全程笔记(2021年8月12日开始重写+优化)

    更好的阅读体验 ※基础模板 2021年8月12日开始对基础课笔记进行重写+优化 请大家支持AcWing正版,购买网课能让自己获得更好的学习体验哦~ 链接:https://www.acwing.com/ ...

  5. AcWing寒假每日一题2058. 笨拙的手指

    AcWing寒假每日一题2058. 笨拙的手指 题目描述 奶牛贝茜正在学习如何在不同进制之间转换数字. 但是她总是犯错误,因为她无法轻易的用两个前蹄握住笔. 每当贝茜将数字转换为一个新的进制并写下结果 ...

  6. AcWing寒假每日一题 2058.笨拙的手指

    题目描述:2058. 笨拙的手指 - AcWing题库 奶牛贝茜正在学习如何在不同进制之间转换数字. 但是她总是犯错误,因为她无法轻易的用两个前蹄握住笔. 每当贝茜将数字转换为一个新的进制并写下结果时 ...

  7. AcWing语法基础课题单

    算法养成计划之语法基础 给大一表弟整理的AcWing语法基础课题单 第一讲 变量.输入输出.表达式与顺序语句 第1题 A + Bhttps://www.acwing.com/problem/conte ...

  8. AcWing Linux基础课

    文章目录 常用文件管理命令 常用命令介绍 创建作业 & 测试作业的正确性 作业 tmux和vim tmux教程 vim教程 创建作业 & 测试作业的正确性 作业 shell shell ...

  9. AcWing 2058.笨拙的手指

    原题链接:AcWing 2058.笨拙的手指 关键词: 枚举.位进制 奶牛贝茜正在学习如何在不同进制之间转换数字. 但是她总是犯错误,因为她无法轻易的用两个前蹄握住笔. 每当贝茜将数字转换为一个新的进 ...

  10. 【ACWing】1120. 埃及分数

    题目地址: https://www.acwing.com/problem/content/1122/ 在古埃及,人们使用单位分数的和(形如1a\frac{1}{a}a1​的,aaa是自然数)表示一切有 ...

最新文章

  1. 通过Matrix进行二维图形仿射变换
  2. oracle json 搜索,oracle 正则查询json返回报文中某个字段的值
  3. ef 单表一对多集合查询_FILTER函数你用过吗?一对多查询与自动筛选,用它都能轻松搞定...
  4. 还不会制作游戏脚本解放双手?那是你不会超强自动化框架AirTest!
  5. [SpringBoot2]Thymeleaf
  6. LocalDateTime与LocalDate之间的相互转换
  7. 计算机专业英语霍洪涛出版社,计算机专业英语(霍洪涛)课件Chapter 4.ppt
  8. 第二章 Qt Widgets项目的创建、运行和发布的过程
  9. 美团到店综合知识图谱的构建与应用
  10. C++ std::set insert 失败 原因和解决方案 operator
  11. property_自己编写一个读取Property文件的Util类
  12. 概率论与数理统计 答案
  13. 腰围尺寸2尺1、2、3、4、5、6、7、8寸分别等于是多少厘米/英寸(对照参考表)
  14. html 页面没有鼠标,网页上鼠标箭头不见了 电脑上不显示鼠标箭头怎么办?
  15. (四)下载利器aria2
  16. 3 linux禁用ssl_linux – Poodle:在服务器上禁用SSL V3真的是一个解决方案吗?
  17. 基于华为高端NAS存储双活的POC测试
  18. 博客已死?移动互联网时代博客的价值
  19. Aho-Corasick自动机算法
  20. cat /etc/sysconfig/network-scripts/ifcfg-ens33

热门文章

  1. 北京地铁:充分发挥数据价值,全面提升业财融合能力
  2. git下载安装教程(附带安装包2019年6月版本 Git 2.22.0)
  3. 这样做生意是亏了还是赚了
  4. MySQL with语句小结
  5. cetus权限连接主从mysql_cetus/cetus-rw.md at master · sea009/cetus · GitHub
  6. 3款吃鸡不卡顿的国产手机,用了都说好,很值!
  7. 第一颗国产 四端口 LVDS 至 HDMI2.0,带音频 芯片 LT2611UX
  8. [树hash]BZOJ 4337——BJOI2015 树的同构
  9. “知识屏蔽“是什么?阅读知识屏蔽的书有什么好处?
  10. 深度图结合RGB实现行为识别