算法题目——岛屿问题(POJ-1328)

雷达安装(poj:1328)详细解释 问题描述 假设海岸线是一条无限的直线。海岸的一边是陆地,另一边是海洋。每一个小岛都是位于海边的一个点。而任何位于海岸上的雷达装置只能覆盖d距离,如果它们之间的距离最多为d,半径可以覆盖海洋中的岛屿。 我们使用笛卡尔坐标系,定义海岸线是x轴。海的一面在x轴之上,陆地的一面在x轴之下。给定海洋中每个岛屿的位置,以及雷达装置覆盖的距离d,您的任务是编写一个程序来找到覆盖所有岛屿的雷达装置的最小数量。注意,岛屿的位置是由它的x-y坐标表示的。 输入 输入 输入由几个测试用例组成。每种情况的第一行都包含两个整数n ( 阅读详情

POJ-1328
题目大意:在x轴上建立尽量少的雷达覆盖所有的岛屿。

Input:岛屿的数量n,雷达覆盖半径d.接下来的n行一行表示一个岛屿(x,y).

Output:每个案例的雷达最少数目.
经典的区间选点!

要搞清楚为什么排序,然后要明白如何选点。

思想(排序原因):小区间被满足,大区间一定被满足。

(所以排序后所有岛屿都是 递增的!)(即小区间都在前面。)

选点:只有前一个点的右端点小于下一个点的左端点,这时才选一个点(即增加一个雷达)因为不可能存在一个雷达可以覆盖到这两个岛屿,而且此时前面用一个雷达覆盖即为最优解!(因为大区间包含了小区间)

#include<iostream>
#include<algorithm>
#include<math.h>
#include <stdlib.h>
#include<vector> 
using namespace std;
 struct point{
	double left,right;
}p[2021],temp;

bool operator <(point a,point b)
{
	return a.left<b.left;
}
int main()
{
	int n;//岛屿的数量
	double r;//雷达半径
	vector<int> vec;
	while(cin>>n>>r&&(n||r))
	{
		int a,b;
		int flag=1;
		
		for(int i=0;i<n;i++)
		{
			cin>>a>>b;
			
			if(b>r)
			{
				flag=0;
			}
			else
			{
				p[i].left = a * 1.0 - sqrt(r * r - b * b);
				p[i].right = a * 1.0 + sqrt(r * r - b * b);
			}
		
		}

		if(flag==0)
		{
			vec.push_back(-1);
			 	
		 } 
		 else
		 {
		 	int count=1;//雷达的个数
			sort(p,p+n);
			temp= p[0];
						
						
			for(int i=1;i<n;i++)
			{
				if(p[i].left>temp.right)
				{
					count++;
					temp=p[i];
				}
				else if(p[i].right<temp.right)
					{
						temp=p[i];
					}				
			 }
			 vec.push_back(count);
		 }
	
			 
		
  }
  	int kase=0;
	
  	int num=vec.size();
 	for(int i=0;i<num;i++)
 	{
 		cout << "Case " << ++kase << ": ";
 		cout<<vec[i]<<endl;
	 }
}


在这里插入图片描述

贪心算法—建立雷达(POJ 1328) 经过日积月累, 以下是小编归纳整理的深入了解Java虚拟机文档,希望可以帮助大家过关斩将顺利通过面试。由于整个文档比较全面,内容比较多,篇幅不允许,下面以截图方式展示。由于篇幅限制,文档的详解资料太全面,细节内容太多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!由于篇幅限制,文档的详解资料太全面,细节内容太多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容。 阅读详情

相关推荐

POJ1328——Radar Installation、POJ1042——Gone Fishing、POJ1456——Supermarket(贪心)

例如,考虑乘积 Prod={a,b,c,d},其中 (pa,da)=(50,2),(pb,db)=(10,1),(pc,dc)=(20,2) 和 (pd,dd)=(30,1)。这是一个典型的区间覆盖问题。可以将问题转化为在不同的终止湖的情况下,如何分配剩余的钓鱼时间,使得钓到的鱼总数最大。一组产品以整数 0 <= n <= 10000 开头,这是集合中的产品数量,然后是 n 对整数 pi di,1 <= pi <= 10000 和 1 <= di <= 10000,指定第 i 个产品的利润和销售截止日期。

u014114223的博客 1879

【贪心算法】POJ1328

【贪心算法】POJ1328

m0_71009069的博客 535

poj1328 区间贪心 雷达覆盖岛屿

题目地址传送门:http://poj.org/problem?id=1328 题意: 给若干的岛屿坐标和雷达覆盖半径,让你在海岸线(X轴)上建立雷达站以覆盖所有岛屿,求出最少需要多少个雷达,如果不能覆盖全部就输出-1 思路: 典型的区间贪心,先考虑不能完全覆盖的情况,就是如果半径小于岛屿y轴高度(这个现实生活中倒是有可能出现),或者雷达覆盖面积小于等于0(这个显然扯犊子),还有一种就是岛的

练练大脑,有何不好 1107

POJ-1328(贪心算法)

晕死了,就是过不了,换了中思想还是过不了,,不清楚是怎么回事,寒假刷题还是不怎么样呀, 没什么紧张感,但是我会坚持的. #include #include #include #include #include #include using namespace std; struct Point { int x; int y; bool operator < (Point

李硕 941

北大POJ初级-所有题目AC代码+解题报告

北大POJ初级-所有题目AC代码+解题报告

高通camera open代码流程(hal到kernel)

内容:简单介绍Camera open代码调用流程,从HAl到kernel。(api1+hal1) 前言 Android camera api和hal对应关系。安卓在版本更新过程中,camera相关代码也经历了几个版本的更新,表现为camera HAL版本更新(HAL1->HAL2->HAL3),camera API版本更新(camera API1->camera API2),接下...

oxoo123的专栏 4276

POJ1328-贪心-区间选点问题

题目大意:在x轴上建立尽量少的雷达覆盖所有的岛屿。 Input:岛屿的数量n,雷达覆盖半径d.接下来的n行一行表示一个岛屿(x,y).  Output:每个案例的雷达最少数目. 经典的区间选点! 要搞清楚为什么排序,然后要明白如何选点。 思想(排序原因):小区间被满足,大区间一定被满足。 (所以排序后所有岛屿都是 递增的!)(即小区间都在前面。)  选点:只有前一个点的右端点小于

Ignorance 1479

知识图谱本体建模工具Protege使用教程

1.下载 先去官网下载:protégé 直接下最新版,点击会有注册页面,只填必填项的name和project description即可。 下载后解压即可使用。 2、安装可视化工具Graphviz 去官网:Download | Graphviz下载。下一个最新版的zip就行。 我解压在了Protege文件夹下,然后在 Preference下指定目录。 指定一下你解压完的Graphviz下的dot.exe,确定。 PS:如果这样报错就尝试在环境变量的系统变量的...

子麒的博客 2万+

POJ 1328 Radar Installation-放置雷达(区间贪心)

题意:海上有n多岛,在海岸线上(x轴)建一个雷达能覆盖到与它距离不超过d的岛,求覆盖所有岛的最小雷达数。思路:一开始把题目看错了,以为是整点才能放的,然后不停的哇,其实思路也错了。简单推一下样例会知道:计算出每个点雷达在x轴上的可控范围,并保存。于是O(n)转化为n个区间,sort一下,求最小覆盖点,坑点(可能只是对于我来说的吧)最后输出的时候-1情况的ca++不要忘记(只能说实在是太菜了,这都能...

running_acmer的博客 380

23、变压器与电抗器知识详解

本文详细介绍了电力变压器的基本原理、等效电路、测试方法及多种运行方式,涵盖双绕组与自耦变压器的建模与应用。深入探讨了变压器极性判断、并联运行条件、电压调节技术,并扩展至非线性、磁滞、EMTP和高频模型,用于瞬态分析。同时阐述了地磁感应电流(GIC)的影响及对偶建模方法。最后系统介绍了各类电抗器的应用场景与特性,包括限流、无功补偿、滤波及特殊用途电抗器,全面覆盖电力系统中变压器与电抗器的核心知识。

eee77的博客 150

Simulink仿真模块-Signal Generator

Signal Generator:生成各种波形 所在的位置库为:Simulink / Sources 模型为: 说明 Signal Generator模块可以产生四种不同波形: 正弦波 方波 锯齿波 随机 可以使用 hertz 或 rad/sec 为单位表示信号参数。双击模型可以选择需要生成的波形,如图所示: 使用默认参数值,可以获得下列波形之一: 波形 波形输出 正弦波 ...

jk_101的博客 2654

poj1328

[poj1328题解] 通过坐标系距离公式计算满足能探测到岛屿i的雷达可能的区间[xi,yi] 根据x的大小从小到大排一遍 若xi>y(i-1)则需要一个新的雷达 若xi<=y(i-1)则可以与上一个岛屿共用 并yi=min(yo,y(i-1))以便正确判断后面的 如此贪心即可 代码 #include<iostream> #include<cstdio> #in...

qq_43665203的博客 353

Android 16强制横竖屏设置

但开发者端的响应却相对滞后,特别是中小型开发团队受限于大屏设备市场渗透率(截至2023年Q2,Android平板全球激活量约1.2亿台,不足手机设备5%)及开发成本考量,适配优先级普遍偏低。这种适配滞后已形成恶性循环——开发者因设备基数不足降低适配意愿,而用户体验缺陷又反向抑制大屏设备的市场接受度。要破解这一困局,既需要Google持续优化Jetpack Compose等现代化UI工具链,更需要建立开发者激励体系,通过应用商店流量倾斜、开发补贴等经济手段提升适配投入产出比。再不肯好好适配大屏设备?

xiangzhihong8的专栏 979

POJ 1328(贪心)

无意间发现了一篇poj的题目分类,里面例出了从入门到高级的题目分类....鼎鼎大名的poj分类很好很有层次感=。= 此题为贪心,题目大意是最少用多少个雷达可以覆盖所有的岛屿。雷达在同一条线上,如果存在雷达扫描不到的岛屿那么输出-1。 我们可以把每个岛屿看做一个圆,然后以雷达半径作为半径,记录下每个岛屿在x轴上的最大点与最小点。 如果前一个岛屿在x轴上的最大点大于后一个岛屿在x轴上的最小点,那

Phoenix 813

14、固态变压器(SST)供电的直流微电网控制策略解析

本文详细解析了基于固态变压器(SST)供电的直流微电网的分层功率管理与控制策略。重点介绍了二次控制和三次控制算法的原理及实现方式,探讨了将SST作为固态同步电机(SSSM)的控制概念及其频率调节方法。通过小型直流微电网的实验案例验证了控制策略的有效性,并对不同三次控制方法的优缺点进行了比较。最后,文章提出了未来控制策略的优化方向,包括通信技术提升、多目标优化和智能算法的应用,为直流微电网的可靠、高效运行提供了理论支持和实践指导。

star的博客 553

TenserRt平台SMOKE 3D目标检测部署完整教程:从理论到实践

本教程详细介绍了在RK3588平台上部署SMOKE 3D目标检测模型的完整流程。SMOKE是一种创新的单阶段单目3D检测方法,通过关键点估计直接预测3D目标信息,有效解决了深度信息缺失等挑战。文章从理论基础出发,解析了SMOKE的核心算法和网络架构,包括DLA-34主干网络和关键点中心化策略。同时提供了详细的Docker环境配置、模型导出到ONNX格式的实践指南,以及TensorRT引擎构建和性能优化的关键技术要点。该教程为开发者在嵌入式平台上实现高效3D目标检测提供了完整的技术参考。

LXY_LOVE36的博客 372

【贪心】POJ 1328:Radar Installation

一、题目内容 POJ 1328 原题地址 二、题意解释 假设海岸线是一条无限延伸的直线。陆地在海岸线的一侧,而海洋在另一侧。每一个小的岛屿是海洋上的一个点。 雷达坐落于海岸线上,只能覆盖d距离,所以如果小岛能够被覆盖到的话,它们之间的距离最多为d。 题目要求计算出能够覆盖给出的所有岛屿的最少雷达数目。 三、代码及注释 #include<iostream> #include<math.h> #include<algorithm> #define INF 0x7ffffff

szy_fasheng的博客 172

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

POJ1328 Radar Installation

题目链接如下 http://poj.org/problem?id=1328 题目大意: 基本信息: 如图所示,在给定一个坐标系后,坐标系的任意点(整数)都可能出现一个岛屿,如P1,P2,P3。在x轴上任意点(整数)都可能出现一个雷达。 雷达有一个探测范围d,以雷达为圆心d为半径的圆内以及圆上都是可以探测到的范围。 初始情况下: 给定岛屿的数量,以及每个岛屿的横纵坐标,然后给出雷达的探测距离。 目...

qq_36206070的博客 688

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

贪心算法 | Poj1328

题目:http://poj.org/problem?id=1328 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 se

Allan的专栏 1158

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

poj1328_Radar Installation(贪心区间解决)

(poj 1328 题) 讲解:不再以雷达为中心找能最大覆盖岛屿的面积,而是一岛屿为中心,一最大距离d为半径找这个岛屿如果想要被覆盖,雷达所能在的位置区间。 把n个区间按照左边的大小排序,我们比较右边的大小来找有多少个独立的区间,独立区间的个数就是需要雷达的个数。(记住公共区间需要缩小区间范围(当存在包含关系的时候要更新比较区间max的大小)) 这种题存在double 浮点型的题一定要仔细,

李静静 389

poj1328解题报告(贪心、线段交集)

POJ1328,题目链接http://poj.org/problem?id=1328 题意: 有一海岸线(x轴),一半是陆地(y<0)、一半是海(y>0),海上有一些小岛(用坐标点表示P1、P2...),现要在海岸线上建雷达(覆盖半径R)。给出所有小岛的位置,和雷达半径,求最少需要多少个雷达? 思路: 1.知道小岛位置,和雷达半径,那么以小岛为圆心,雷达覆盖半径...

weixin_34112030的博客 425

POJ1328 Radar Installation (区间选点问题,贪心)

题目地址:http://poj.org/problem?id=1328 描述: 解法:采用贪心方法。 先排序,原先想“判断下一个坐标能否被上个坐标的圆覆盖”,coos[j].x-sqrtf(d*d-coos[j].y*coos[j].y) 4 5 //n d -5 3 -3 5 2 3 3 3 后来采用:把每个岛屿来当做雷达的圆心,半径为d,做圆,与x轴会

hermito的专栏 600

王道机试复试指南---第七章---7.2区间贪心

7.2区间贪心 今年暑假不AC #include<iostream> #include<cstdio> #include<algorithm> const int MAXN=100; using namespace std; struct video{ int s; int e; }v[MAXN]; bool cmp(video x,video y){ return x.e<y.e; } int main(){ int n; while(scanf

weixin_44411458的博客 218

【题解】POJ 1328 Radar Installation(贪心)

POJ 1328 Radar Installation 原题 假设滑行是一条无限长的直线。陆地在海岸的一边,大海在另一边。每个小岛都是位于海边的一个点。而任何定位在海岸上的雷达装置,只能覆盖d距离,所以海上的岛屿可以被半径装置覆盖,如果它们之间的距离最多是d。 我们使用笛卡尔坐标系,定义滑行是x轴。海面在x轴上方,陆地面在x轴下方。考虑到每个岛屿在海上的位置,以及雷达装置的覆盖距离,您的任务是编写一个程序来查找覆盖所有岛屿的雷达装置的最小数量。注意,一个岛的位置是由它的x-y坐标表示的。 图一雷达装置的样

bu_shushu的博客 1280
上一篇: 算法题目——田忌赛马(POJ-2287)
下一篇: python小游戏——21点
943802606
博客等级 码龄6年 1万+粉丝 177原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值