Snapchat - 小车通过雷达区域

有一条路,路两边可以想象为 y = 0 和y = 1两条直线。现在给你list of radar,每个雷达为(横坐标,纵坐标,辐射半径)。问你一辆车能否通过这条路。

代码说话:

 1     static class Radar {
 2         double x;
 3         double y;
 4         double r;
 5         public Radar(double x, double y, double r) {
 6             this.x = x;
 7             this.y = y;
 8             this.r = r;
 9         }
10     }
11
12     class Area {
13         List<Radar> radars;
14         double upperbound;
15         double lowerbound;
16
17         public Area() {
18             radars = new ArrayList<Radar>();
19             upperbound = 0;
20             lowerbound = 1;
21         }
22
23         private boolean canMerge(Radar r1, Radar r2) {
24             return Math.pow(r1.r + r2.r, 2) >= Math.pow(r1.x - r2.x, 2) + Math.pow(r1.y - r2.y, 2);
25         }
26
27         private boolean merge(Radar r) {
28             for(Radar radar: radars) {
29                 if(canMerge(r, radar)) {
30                     upperbound = Math.max(upperbound, r.x + r.r);
31                     lowerbound = Math.min(lowerbound, r.y - r.r);
32                     radars.add(r);
33                     return true;
34                 }
35             }
36             return false;
37         }
38
39         private boolean cannotPass() {
40             return upperbound >= 1 && lowerbound <= 0;
41         }
42     }
43
44
45     public boolean canCarPass(List<Radar> radars) {
46         List<Area> area = new ArrayList<Area>();
47         for(Radar radar: radars) {
48             boolean merged = false;
49             for(Area a: area) {
50                 merged = a.merge(radar);
51                 if(merged) {
52                     break;
53                 }
54             }
55             if(!merged) {
56                 Area a = new Area();
57                 a.radars.add(radar);
58                 area.add(a);
59             }
60         }
61         for(Area a : area) {
62             if(a.cannotPass()) {
63                 return false;
64             }
65         }
66         return true;
67     }
68
69     public static void main(String[] args) {
70         RadarDetect rd = new RadarDetect();
71         //List<Radar> radars = Arrays.asList(new Radar(1, 0.5, 0.49), new Radar(3, 1.5, 1), new Radar(3, 0.4, 0.3));
72         List<Radar> radars = Arrays.asList(new Radar(1, 0, 1.5), new Radar(3, 1, 1.5));
73         System.out.println(rd.canCarPass(radars));
74     }
时间: 10-16

Snapchat - 小车通过雷达区域的相关文章

雷达扫描控件----------WinForm控件开发系列

/// <summary> /// 雷达扫描控件 /// </summary> [ToolboxItem(true)] [DefaultProperty("Items")] [Description("雷达扫描控件")] public partial class RadarExt : Control { #region private Color areaColor = Color.LawnGreen; /// <summary>

Python下载区域雷达拼图

下载某一天某区域全部的雷达拼图 1 #!/usr/bin/env python3 2 # -*- coding: utf-8 -*- 3 quyu = {'东北': 'ANEC', '华北': 'ANCN', '华东': 'AECN', '华中': 'ACCN', 4 '华南': 'ASCN', '西南': 'ASWC', '西北': 'ANWC', '长江': 'ABCJ', 5 '黄淮': 'ABHH', '东南沿海': 'ACES', '全国': 'ACHN'} 6 7 8 def get

Sentinel-1雷达数据可以免费下载

The Sentinel-1 Scientific Data Hub(https://scihub.esa.int )网站提供免费下载 Sentinel-1雷达数据Level-0 和 Level-1级别存档数据.可以下载产品接受模式包括: Strip Map (SM) Interferometric Wide Swath (IW) Extra Wide Swath (EW) 提供下载的数据是从10月3号接收的存档数据. 第一步:注册 进入https://scihub.esa.int. 单击图标,

毫米波雷达与单目相机融合

说起融合,大家肯定会想到 融合的几个层次.数据级融合.特征级融合.决策级融合. 目前我们所采用的融合策略是决策级融合. ( 1)特征级融合的特点,主要是雷达辅助图像. 基本的思路是将雷达的点目标投影到图像上,围绕该点我们生成一个矩阵的感兴趣区域,然后我们只对该区域内进行搜索,搜索到以后跟雷达点目标进行匹配.它的优点是可以迅速地排除大量不会有车辆的区域,极大地提高识别速度.而且呢,可以迅速排除掉雷达探测到的非车辆目标,增强结果的可靠性. 缺点: 1)首先,这个方法实现起来有难度.理想情况下雷达点出

poj1328雷达设置 贪心

Radar Installation 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

luogu P1325 雷达安装

题目描述 描述: 假设海岸线是一条无限延伸的直线.它的一侧是陆地,另一侧是海洋.每一座小岛是在海面上的一个点.雷达必须安装在陆地上(包括海岸线),并且每个雷达都有相同的扫描范围d.你的任务是建立尽量少的雷达站,使所有小岛都在扫描范围之内. 数据使用笛卡尔坐标系,定义海岸线为x轴.在x轴上方为海洋,下方为陆地. 样例1如图所示 输入输出格式 输入格式: 第一行包括2个整数n和d,n是岛屿数目,d是雷达扫描范围. 接下来n行为岛屿坐标. 输出格式: 一个整数表示最少需要的雷达数目,若不可能覆盖所有岛

echarts雷达图大小自适应

结合了媒体查询 首先在css样式表中写出你希望雷达图在不同分辨率下的大小 @media screen and (max-height:780px){ .left-score-image { width: 190px; height: 135px; margin-left: 36px; margin-top: 10px; } } 其次,在js文件中加入 var scoreImage = document.getElementById('scoreImage'); var myChart = ech

自动化设备AGV数字化小车

AGV 概念 AGV是(AutomatedGuided Vehicle)的缩写,意即"自动导引运输车",是指装备有电磁或光学等自动导引装置,它能够沿规定的导引路径行驶,具有安全保护以及各种移载功能的运输车. AGV是现代工业自动化物流系统中的关键设备之一,它是以电池为动力,装备有电磁或光学等自动导航装置,能够独立自动寻址,并通过计算机系统控制,完成无人驾驶及作业的设备.AGV输送路线具有施工简单.路径灵活,不占用空间.较好的移动性.柔性等优点. AGV 发展趋势 AGV不仅可大大节约企

京东“竖亥小车”秒测商品尺寸重量

1月20日,京东对外展出“竖亥小车”.该“小车”利用英特尔实感技术开发,可秒测出商品尺寸和重量,实现了商品物流属性的自动收集,为产品的包装和货架存储提供基础数据. 20日下午,在北京通州区马驹桥的一处京东仓库内,工作人员将一件枕头放置到“竖亥小车”上,先是通过扫码器录入了产品的名称信息,之后点击电脑屏幕中的扫描键,眨眼之间,枕头的长.宽.高和重量便显示在系统当中. “目前‘竖亥小车’对规则物品测量的精确度误差缩小到毫米级,对不规则物品测量的精确度达到了厘米级,整个测量过程能在1分钟内完成.”京东