POJ 1328 贪心

poj 1328 贪心算法的深入剖析 题目链接:http://acm.pku.edu.cn/JudgeOnline/problem?id=1328大意是x轴上方有n个目标点,坐标全为整数,为了扫描到他们,在x轴上安放雷达,每一个雷达扫描半径为d,问至少安放多少雷达。 首先想到的是化归。找出每一点在x轴上的扫描边界,即在这个范围内必须有雷达才能扫描到。这样便将问题化归为:给n个闭区间,找出最少的点,保证每个区间至少有一个点。 阅读详情
题意:海中有n个岛 有一种半径为d的雷达 求最少在岸边安几个雷达即可扫描到所有的岛

很简单的题,贪心算法

对每个小岛求出海边最右边能扫描到小岛的位置(p,0)

按p值对小岛排序

贪心 每次对最左边的未安置雷达的位置(p,0)安置雷达


#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
#define M 1005
int n,id;
double d;
bool bans;
struct Node
{
	double x,y;
	double p;
	bool is_cover;
	bool operator < (const Node &a)const
	{
		return p<a.p;
	}
	void read()
	{
		scanf("%lf%lf",&x,&y);
		if(y>d)
		{
			bans=false;
		}
		p=x+sqrt(d*d-y*y);
		is_cover=false;
	}
}a[M];

void read()
{
	int i,x,y;
	for(i=0;i<n;i++)
	{
		a[i].read();
	}
	sort(a,a+n);
}

void cal()
{
	int ans=0;
	int i,j;
	for(i=0;i<n;i++)
	{
		if(!a[i].is_cover)
		{
			a[i].is_cover=true;
			ans++;
			for(j=i+1;j<n;j++)
			{
				if(!a[j].is_cover)
				{
					if( ( (a[j].x-a[i].p) * (a[j].x-a[i].p) + a[j].y*a[j].y ) <= d*d)
					{
						a[j].is_cover=true;
					}
				}
			}
		}
	}
	printf("Case %d: %d\n",++id,ans);
}
int main()
{
	id=0;
	while(~scanf("%d%lf",&n,&d))
	{
		bans=true;
		if(n==0&&d==0)
		{
			break;
		}
		read();
		if(bans)
		{
    		cal();
		}
		else
		{
			printf("Case %d: -1\n",++id);
		}
	}
	return 0;
}


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 个产品的利润和销售截止日期。 阅读详情

相关推荐

贪心算法_POJ1328和POJ2586小结

POJ1386链接http://poj.org/problem?id=1386 题意就是说给定小岛坐标,给出雷达覆盖范围,求出雷达最小个数 我们发现除却岸边到雷达的y轴距离大于覆盖半径r之外,总是可以与海岸线有一个或者两个交点,我们可以使用一个结构体(含有连个double类型的变量来进行存储) 于是原题目就变成了关于线段的最小重叠问题了,我们的贪心策略也很简单 : 首先: 1>对结构体按照left大小进行排序 2>判断当前temp.right>line[i].right时,直接令temp=

Alanadle的博客 387

雷达优化部署--示例

matlab示例,对雷达进行部署优化

zhengquanpu的博客 280

波束形成算法:LCMV实现(MATLAB)

阵列信号处理,波束成形,

weixin_43601588的博客 1万+

POJ1328

POJ原址:POJ1328

Leafy_xy 573

8155平台multi-display(多屏显示)原理与配置

8155平台多屏互动原理与配置

漂流瓶の海岸 1608

计算机组成原理实验二 运算器组成实验

事实上,ALU的设计是在全加器的基础上,对全加器功能的扩展来实现符合要求的多种算术/逻辑运算的功能。为了实现多种功能的运算,An、Bn数据是不能直接与全加器相连接的,它们受到功能变量F3—F1的制约,因此,可由An、Bn数据和功能变量F3-F1组合成新的函数Xn 、Yn,然后,再将Xn 、Yn和下一位进位Cn-1通过全加器进行全加运算以实现所需的运算功能。AC寄存器可用来存储ALU的输入以实现两个操作数的运算操作,也可以用来存储来自ALU的结果,以将这些结果反馈给ALU以进行更多的处理。

qq_63574533的博客 1451

C语言 poj1328题

岛屿以d为半径做圆,与x轴的两个交点构成一条线段,能够扫到该岛屿的雷达一定在该线段上,将所有的线段按左端点大小从左到右排序,若前一个岛屿的右端点比后一个岛屿的左端点大,则两个岛屿能共用一个雷达,否则不能,雷达数+1,若能共用,则下一次作为判断标准的是前两个可以共用的岛屿右端点更小的岛屿位置。 该题已经在北大ACM网站提交通过 # include&lt;stdio.h&gt; # inclu...

H.千面的博客 988

从理论到实践:利用FilterSolutions高效设计7阶椭圆低通滤波器

本文详细介绍了如何利用FilterSolutions软件高效设计7阶椭圆低通滤波器。文章从理论入手,对比了巴特沃斯、切比雪夫等经典滤波器特性,阐述了在要求高衰减陡度(如62dB抑制)和严格通带波纹(0.2dB)时,椭圆滤波器是最优选择。通过分步实战教程,指导读者完成从软件参数设置、性能验证到实际电路布局与调试的全过程,助力射频与高速数字信号处理工程师将理论转化为可靠设计。

jupi8的博客 561

poj解题报告——1328

不得不说,这题是让我饱受折磨,毕竟第一次做贪心算法,而且WA了好多次,幸好有学长的帮助,最终找到了问题所在,是在快排上是问题,double高位不可向int低位转换,由于一开始强制转换导致虽然样例和其他的测试数据过了,但还是WA,现在改完了就对了,附上AC代码,ps:这题通过率是22%,真心不简单 代码如下 #include #include #include struct poi

Lingfu74的专栏 602

SPSS&Mplus—共同方法偏差(Common Method Bias)控制与检验

共同方法偏差(Common Method Bias)的控制方法:程序控制(Procedural)和统计控制(Statistical)。

m0_54401011的博客 1万+

同物种,不同版本之间的坐标转化

是最常用的工具,如果有可用的链文件,这通常是最便捷的方法。CrossMap是一个功能强大的替代工具,支持多种文件格式和物种。自定义生成链文件适用于没有现成资源的情况,虽然复杂一些,但可以满足特定需求。Ensembl 和 Gramene提供的工具适用于支持的物种,尤其在植物基因组领域可能更具优势。选择合适的方法取决于你正在处理的物种、基因组版本以及现有的资源。

qq_40256654的博客 1853

poj1328

poj1328题解

幽涧恋桥 495

shopro 商城,2025年新申请的微信支付提示失败,支付提示 Get Wechat Public Cert Error 问题的修复办法

shopro 商城,最近新申请的微信支付商户 支付提示 Get Wechat Public Cert Error 问题的修复办法

行走的卡路里 1245

【贪心算法】POJ1328

【贪心算法】POJ1328

m0_71009069的博客 535

详细介绍用MATLAB实现基于A*算法的路径规划(附完整的代码,代码逐行进行解释)(一)--------A*算法简介和环境的创建

   本系列文章主要介绍基于A*算法的路径规划的实现,并使用MATLAB进行仿真演示。    一、 A*算法简介       A*(A-Star)算法是一种静态路网中求解最短路径最有效的直接搜索方法,也是解决许多搜索问题的有效算法。算法中的距离估算值与实际值越接近,最终搜索速度越快。      公式表示为: f(n)=g(n)+h(n),其中, f(n) 是从初始状态经由状态n到目标状态的代价估计,g(n) 是在状态空间中从初始状态到状态n的实际代价,h(n) 是从状态n到目标状态的最佳路径的估计代价。

慕羽★的博客 7万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

poj1328(贪心)

题意:假设海岸线是一条无限延伸的直线。陆地在海岸线的一侧,而海洋在另一侧。 题意:每一个小的岛屿是海洋上的一个点。雷达坐落于海岸线上,只能覆盖d距离, 题意:所以如果小岛能够被覆盖到的话,它们之间的距离最多为d。 题意:求出能够覆盖给出的所有岛屿的最少雷达数目。 分析:假设点A为某岛屿,求出在x轴上放雷达能覆盖A的圆心所在范围。如图,圆心在[L,R]之间 分析:就将问题转换为

Paige's Blog 1797

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

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

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

bu_shushu的博客 1280

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

poj 1328 贪心+qsort

昨天把贪心看了一下。开始进入贪心的学习。 /* * ===================================================================================== * * Filename: poj 1328 * * Description: 贪心+qsort * ...

weixin_30907523的博客 103

poj 1328 区 间选点问题(贪心)

数轴上有n个闭区间[ai,bi]。取尽量少的点,使得每个区间内都至少有一个点(不同区间内含的点可以是同一个)。 贪心策略: 按照b1 证明: 为了方便起见,如果区间i内已经有一个点被取到,我们称区间i被满足。 1、首先考虑区间包含的情况,当小区间被满足时大区间一定被满足。所以我们应当优先选取小区间中的点,从而使大区间不用考虑。       按照上面的方式排序后,

张小V 558

poj1328 Radar Installation —— 贪心

题目链接:http://poj.org/problem?id=1328 题解:区间选点类的题目,求用最少的点以使得每个范围都有点存在。以每个点为圆心,r0为半径,作圆。在x轴上的弦即为雷达可放置的范围。这个范围可用勾股定理求得。记录每个点的范围,然后排序,贪心。 (由于不熟悉qsort的用法,折腾了一个小时。后来清晰了:qsort 的cmp是通过正负判断(但结构体又不是),而...

alince20008的博客 174

poj 1328 Radar Installation 贪心

老规矩,链接思密达http://poj.org/problem?id=1328 典型贪心 主要有三个问题 1.sort函数里加的n不能是int外的类型,完全没碰到过这么wa的 2.结构体的cmp函数,是降序 3.没考虑到一个特殊情况,就是下一个区间如果右点小于上一个的右点要更新公共右点,下面代码 #include #include #include using namespa

萌即正义的萌新教学 297

POJ 1328 放置雷达(贪心,区间)

POJ 1328 Radar Installation-放置雷达问题:就是给出n个海岛的坐标和雷达的半径d,雷达只能沿着x轴放置,求出能把所有海岛都覆盖,所需要的最小雷达数。如果不能满足输出 -1.n d 为0 0 时结束。输入:3 2 1 2 -3 1 2 1 1 2 0 2 0 0输出:Case 1: 2 Case 2: 1分析:因为雷达的圆心只能在x轴上,所以可以根据每个海岛的坐标、圆的...

AC是绝对不可能的 1150

POJ1328 Radar Installation 贪心

题目链接 http://poj.org/problem?id=1328 分析 贪心,转化为选最少的点覆盖所有区间。 将区间按右端点升序排序,依次考虑每个区间,若不能覆盖,则在区间右端点加雷达。 很容易理解,选择右端点是最优的。 AC代码 #include <cstdio> #include <cmath> #include <algorithm> using ...

Kevin的博客 180

POJ 1328(贪心)

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

Phoenix 813

【贪心】poj 1328 Radar Installation

poj 1328 Radar Installation(贪心)题意:x轴是无限长的一条海岸,x轴上方有很多小岛,需要安装雷达在海岸上,使雷达能扫到所有的小岛。给出小岛的坐标,和雷达扫描的半径,问最少需要多少雷达。题解:最优的方案把第一个点放在第一个雷达刚好能扫到的地方,就确定了放第一个雷达的最优位置,然后剩下第一个雷达没扫到的继续按这个方式找还需要的雷达的最优位置。那么我们需要把每个小岛在海岸的雷

学无纸巾 362
上一篇: POJ 1753
下一篇: POJ 2109
MakingMaker
博客等级 码龄15年 6粉丝 108原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值