海岸雷达问题(java实现)——贪心算法例题
admin
2024-03-19 00:39:53
0

海岸雷达问题:

题目描述: 
        假定海岸线是一条无限延伸的直线,陆地在海岸线的一边,大海在另一侧。海中有许多岛屿,每一个小岛我们可以认为是一个点。现在要在海岸线上安装雷达,雷达的覆盖范围是r,也就是说大海中一个小岛能被安装的雷达覆盖,那么它们之间的距离最大为d。 
我们使用平面直角坐标系,定义海岸线是x轴,大海在x轴上方,陆地在下方。给你海中每一个岛屿的坐标位置(x,y)和要安装的雷达所覆盖的范围d,你的任务是写一个程序计算出至少安装多少个雷达能将所有的岛屿覆盖。 
        输入描述: 
        第一行两个整数n(1≤n≤100000)和d,分别表示海中岛屿的数目和雷达覆盖的范围半径d。 
        接下来n行,每行两个整数,表示每个岛屿的坐标位置(x,y)。 
        输出描述: 
        一行一个整数,即能将所有岛屿全部覆盖至少安装的雷达个数。

解题思路: 

        我一开始想,把所有的岛屿坐标排序后,从左到右,然后对每个岛屿划一个圆,然后取右边的与x的焦点,这样肯定能覆盖之后的岛屿,但是后来发现不行,因为如果是这样的情况,塔就不能照射到第二个岛。

所以存在问题,于是我换了一个方法,吧每个岛屿的能放塔的x上的范围记录下来,比如

红色是第一个岛的范围,橙色是第二个岛的范围,我们先把塔放在第一个岛的右边,之后进行判断,如果第二个岛的左边点在塔的右边,说明第二个塔太远了,只能对第二个岛屿再设一个塔。如果第二个岛屿的左边小于塔1,右边大于塔1,说明这个塔可以照射到岛屿2。就不用管这个岛屿了。如果第二个岛屿的右边小于塔1,那么直接吧塔1设置到第二个岛屿的右边点就可以了。(因为之前已经排序,第二个岛屿的左边点不可能小于第一个岛屿左边点)。所以一轮轮下去,就ok了。下面是代码:

package 贪心算法;public class RadarInstallations {//排序二维数组public static void sort2(double[][] arr) {for (int i = 0; i < arr.length; i++) {for (int j = i; j < arr.length; j++) {if (arr[i][0] > arr[j][0]) {for (int j2 = 0; j2 < arr[0].length; j2++) {double tmp = arr[i][j2];arr[i][j2] = arr[j][j2];arr[j][j2] = tmp;}}}}}public static void main(String[] args) {//测试数据int n = 2;int r = 5;double[][] island = new double[][] {{2,2},{1,1}};//吧所有岛屿以r为半径与x轴交于两点的横坐标存入区域数组place里double[][] place = new double[n][n];for (int i = 0; i < n; i++) {double a = Math.sqrt(r * r - island[i][1] * island[i][1]) ;place[i][0] = island[i][0] - a;place[i][1] = island[i][0] + a;}//排序二维数组sort2(island);double[] tower = new double[n];int count = 0;tower[count] = place[0][1];//设置第一座灯塔for (int i = 1; i < n; i++) {if (place[i][1] > tower[count]) {count++;tower[count] = place[i][2];}else {if (place[i][1] < tower[count]) {tower[count] = place[i][1];}}}System.out.println(count + 1);}
}

相关内容

热门资讯

印度重开中国旅游签,两国之间仍... (王潇雨 摄影)文/王潇雨7月24日,印度驻华使馆在其中文社交媒体账号上发布消息,宣布自今年7月24...
湖南桑植向重庆市民发出2小时高... 7月18日,“渝见桑植”文旅产业、招商引资暨桑植白茶推介会在重庆举行。借助渝厦高铁贯通契机,深化湖南...
海外华媒参访重庆千年古镇 感受... 中新网重庆7月23日电 (张旭 杨思琦)“我从小在欧洲长大,很少能接触到这么浓郁的中国风情。”匈牙利...
游娱食学,来永济竹林村共赴“诗... 永济市韩阳镇竹林村 游娱食学,共赴“诗和远方” 盛夏时节,步入永济市韩阳镇竹林村的千亩竹林,曲径通幽...
伪造、倒卖迪士尼酒店房卡牟利 ... 上海迪士尼主题乐园酒店和玩具总动员酒店的宾客可凭借房卡优先进入上海迪士尼乐园,这原本是园方给予宾客的...
2025年4月山西省文化和旅游... 由中国旅游报社、中国社会科学院中国舆情调查实验室等单位联合成立的文旅产业指数实验室,从2025年4月...
制造假房卡冒充迪士尼“早享卡”... 以80-100元收购迪士尼主题酒店住客的房卡,次日再以120-150元的价格售卖给非酒店游客,只为提...
黄山旅游三天两夜需要多少钱?黄... 黄山,这座被誉为“天下第一奇山”的名山,以其奇松、怪石、云海、温泉四绝闻名于世。一直以来,它都是我心...
活力中国调研行丨从边境小城到文...   随着暑期到来,位于中朝俄三国交界的边境小城吉林省珲春市迎来了边境游、跨境游热潮。  近年来,珲春...
原创 “... 今世缘的全国化进程还有很长的路要走。 文/每日财报 杜康 这个夏季,作为苏超赛事的独家白酒赞助商,...
三伏天用它包饺子,比韭菜还香,... 三伏天!这菜包饺子比韭菜还香,排毒护眼又解暑 刚入伏这几天雨水特别多,空气潮湿又闷热,这导致人体出...
湖北微波炉蒸蛋:3分钟做出布丁... 湖北人爱蒸蛋,讲究“滑如凝脂、嫩若布丁”,而微波炉的便捷性让这道传统菜更易实现。掌握以下技巧,3分钟...
腐竹制作设备有哪些?分别控制哪... 在美食的世界里,腐竹是一道备受喜爱的传统豆制品。它口感独特,营养丰富,无论是凉拌、炒菜还是做汤,都能...
热浪退散!趁热集合、北京稻香村... 10.17-19来武汉国际博览中心, 看2025秋季焙烤展 get更多全年节令烘焙产品方案和灵感~ ...
三伏养生正当时!快来解锁这份“... “冷在三九,热在三伏”,三伏天,作为一年中最为炎热的时段,深刻影响着人们的生活、习俗与健康。那么,三...
原创 国... 西红柿这东西,真是厨房的 “万能选手”—— 炒鸡蛋时扔两个,酸甜汁裹着蛋香;煮汤时丢几块,汤底立马鲜...
剩饭逆袭:5分钟江苏蛋炒饭的3... 江苏蛋炒饭以“粒粒分明、金黄裹香”著称,剩饭反而是其灵魂——隔夜饭脱水后更易炒散,口感弹牙。掌握以下...
品牌认证:提升糖洒领域品牌影响... 糖洒(又称彩糖粒、糖针或“彩糖豆”)是用于装饰和增加甜点口感的极小型糖果颗粒,常用于纸杯蛋糕、甜甜圈...
徐凡:一瓶盐汽水的时光回溯 盐汽水见证了人们对清凉与健康的追求,也承载着从远古盐泉到现代工厂的漫长旅程。 “还有盐汽水不?” ...
张家界五天四晚父母颐养行 ,暑... 张家界五天四晚家庭游:让欢笑在张家界峰林间绽放 【第一天】初遇张家界:探秘天门山的云端仙境 清晨,...