Acwing---112.雷达设备

news2024/11/27 8:37:05

雷达设备

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

1.题目

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

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

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

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

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

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

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

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

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

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

输入样例:

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;
        }

        @Override
        public 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);
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/331854.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023-02-09 mysql/innodb存储

前言 大家都知道 MySQL 的数据都是保存在磁盘的,那具体是保存在哪个文件呢?MySQL 存储的行为是由存储引擎实现的,MySQL 支持多种存储引擎,不同的存储引擎保存的文件自然也不同。InnoDB 是我们常用的存储引擎,也是 MySQL 默认的存储引擎。本文主要以 InnoDB 存储引擎展开讨…

centos7.6 设置防火墙

1、查看系统版本 cat /etc/redhat-release2、查看防火墙运行状态 systemctl status firewalld这里可以看到当前是未运行状态(inactive)。 3、关闭开机自启动防火墙 systemctl disable firewalld.service4、启动防火墙并查看状态&#xff0c;系统默认 22 端口是开启的。 sy…

云原生微服务应用平台 EDAS 2022 年度报告

作者&#xff1a;孤戈 最近一年来&#xff0c;随着我们的客户对于云技术的诉求从资源快速交付的服务&#xff0c;转变为对资源精益运用的服务。EDAS 团队结合公共云上所服务的企业类客户的几万个应用&#xff0c;选取了 8 个最具代表性的指标&#xff0c;进行了一次系统性的分…

进度条实时显示request下载文件的解决方案

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,科大讯飞比赛第三名,CCF比赛第四名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

Linux -文件打包和解压缩

1、概念 在 Windows 上最常见的不外乎这两种 .zip&#xff0c;.7z 后缀的压缩文件。而在 Linux 上面常见的格式除了以上两种外&#xff0c;还有 .rar&#xff0c;.gz&#xff0c;.xz&#xff0c;.bz2&#xff0c;.tar&#xff0c;.tar.gz&#xff0c;.tar.xz&#xff0c;*.tar…

python--turtle

前言 就随便练练&#xff0c;学习一下turtle库的使用 正文 1.语法学习 import turtle #导入库 turtle.showturtle() #画笔显示箭头 turtle.write("我是大帅逼") #写下字符串 turtle.forward(300) …

拦截器interceptor总结

拦截器一. 概念拦截器和AOP的区别&#xff1a;拦截器和过滤器的区别&#xff1a;二. 入门案例2.1 定义拦截器bean2.2 定义配置类2.3 执行流程2.4 简化配置类到SpringMvcConfig中一. 概念 引入&#xff1a; 消息从浏览器发送到后端&#xff0c;请求会先到达Tocmat服务器&#x…

C语言一维数组篇【下】——每日刷题经验分享

一维数组篇——每日刷题经验分享~&#x1f60e;前言&#x1f64c;有序序列插入一个整数 &#x1f60a;序列中删除指定数字 &#x1f60a;序列中整数去重小乐乐查找数字筛选法求素数总结撒花&#x1f49e;&#x1f60e;博客昵称&#xff1a;博客小梦~ &#x1f60a;最喜欢的座右…

【FFMPEG源码分析】从ffplay源码摸清ffmpeg框架(一)

ffplay入口 ffmpeg\fftools\ffplay.c int main(int argc, char **argv) {/*******************start 动态库加载/网络初始化等**************/int flags;VideoState *is;init_dynload();av_log_set_flags(AV_LOG_SKIP_REPEATED);parse_loglevel(argc, argv, options);/* regis…

SSJ-21A AC220V静态【时间继电器】

系列型号&#xff1a; SSJ-11B静态时间继电器&#xff1b;SSJ-21B静态时间继电器 SSJ-21A静态时间继电器&#xff1b;SSJ-22A静态时间继电器 SSJ-22B静态时间继电器SSJ-42B静态时间继电器 SSJ-42A静态时间继电器SSJ-41A静态时间继电器 SSJ-41B静态时间继电器SSJ-32B静态时间继电…

dev-c++解决中文输出乱码问题

之前写c程序老是出现编译输出乱码的问题&#xff0c;就去博客&#xff0c;百度查阅了一番找了找了办法。废话不多说直接上操作。 首先打开dev-c-》工具-》编译选项 在第一行输入 -fexec-charsetgbk//生成gbk格式 -fexec-charsetUFT-8//生成UFT-8格式 也可以输入UFT-8格式&…

获取主机RDP连接凭据

为了避免每次连接服务器都进行身份验证&#xff0c;经常使用RDP的用户可能勾选保存连接凭据&#xff0c;以便进行快速的身份验证。这些凭据都使用数据保护API以加密形式存储在windows的凭据管理器中&#xff0c;路径为“%USERPROFILE%\AppData\Local\Microsoft\Credentials”执…

C语言---宏

专栏&#xff1a;C语言 个人主页&#xff1a;HaiFan. 专栏简介&#xff1a;本专栏主要更新一些C语言的基础知识&#xff0c;也会实现一些小游戏和通讯录&#xff0c;学时管理系统之类的&#xff0c;有兴趣的朋友可以关注一下。 #define预处理预定义符号define#define定义标识符…

云片验证码分析思路

本文仅供学习参考&#xff0c;又不懂的可以联系博主 目标链接: aHR0cHM6Ly93d3cueXVucGlhbi5jb20vcHJvZHVjdC9jYXB0Y2hh接口分析 captcha/get 验证码图片获取接口&#xff0c;GET请求&#xff0c;包含四个参数cb、i、k、captchaId 接口返回&#xff0c;如果是滑动验证码&…

「敏捷建模」敏捷设计理念的纪律

本文概述了敏捷软件开发团队的设计策略。这些策略对于扩展敏捷软件开发以满足现代IT组织的实际需求至关重要。敏捷的设计方法与传统方法截然不同&#xff0c;显然也更有效。重要的是要了解&#xff1a; 敏捷设计实践 敏捷设计理念 整个敏捷生命周期的设计 1.敏捷设计实践 从高…

大数据概述

一、大数据时代 大数据时代 三次信息化浪潮&#xff1a;个人计算机80年-互联网95年-物联网、云计算和大数据(2010年) 发展时间较短&#xff0c;大数据人才缺失大数据人才 培训出来的&#xff1a;Java-》大数据 优点&#xff1a;对于大数据技术的细节会比较清楚 缺点&#xff1…

为什么Redis集群的最大槽数是16384个?

对于客户端请求的key&#xff0c;根据公式HASH_SLOTCRC16(key) mod 16384&#xff0c;计算出映射到哪个分片上&#xff0c;然后Redis会去相应的节点进行操作&#xff01; 为什么有16384个槽&#xff1f; Redis集群并没有使用一致性hash而是引入了哈希槽的概念。Redis 集群有16…

金仓数据库事务日志与检查点

事务日志与检查点 WAL文件&#xff0c;在金仓数据库中&#xff0c;事务日志文件称为Write Ahead Log&#xff08;预写式日志&#xff0c;简称WAL&#xff09;。 WAL存储了数据库系统中所有更改和操作的历史&#xff0c;相当于Oracle的REDO。 WAL机制是在这个写数据的过程中加…

[Android开发基础4] 意图与意图过滤器

文章目录 意图&#xff08;Intent&#xff09; 简介 显式意图 隐式意图 意图过滤器&#xff08;IntentFiler&#xff09; action data category 意图&#xff08;Intent&#xff09; 简介 Intent被称为意图&#xff0c;是程序中各组件进行交互的一种重要方式&#xff0c…

第四章.误差反向传播法—简单层的实现(加法层(AddLayer)+乘法层(MulLayer))

第四章.误差反向传播法 4.1 简单层的实现 本章主要讲述的是加法层(AddLayer)和乘法层(MulLayer)的实现过程。 1.加法层(AddLayer) 从正向传播和反向传播两个层面进行分析。 1).示例&#xff1a; 以zxy为对象&#xff0c;观察它的传播。zxy的导数&#xff1a;∂z/∂x1,∂z/∂…