POJ 1328(贪心)

贪心算法—建立雷达(POJ 1328) 面试前一定少不了刷题,为了方便大家复习,我分享一波个人整理的面试大全宝典Java核心知识整理Java核心知识Spring全家桶(实战系列)其他电子书资料Step3:刷题既然是要面试,那么就少不了刷题,实际上春节回家后,哪儿也去不了,我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。以下是我私藏的面试题库:《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》 阅读详情

无意间发现了一篇poj的题目分类,里面例出了从入门到高级的题目分类....鼎鼎大名的poj分类很好很有层次感=。=

此题为贪心,题目大意是最少用多少个雷达可以覆盖所有的岛屿。雷达在同一条线上,如果存在雷达扫描不到的岛屿那么输出-1。

我们可以把每个岛屿看做一个圆,然后以雷达半径作为半径,记录下每个岛屿在x轴上的最大点与最小点。

如果前一个岛屿在x轴上的最大点大于后一个岛屿在x轴上的最小点,那么在x轴上以岛屿最大点画圆,则必定包含了前后两个岛屿,不需要再增加雷达。

如果前一个岛屿在x轴上的最大点小于后一个岛屿在x轴上的最小点,那么一个雷达是无法同时检测到两个岛屿的,需要雷达+1。

另外,如果一个雷达能检测到多个岛屿,雷达应该取所有岛屿的最小右边界,否则如果下一个点只满足岛屿的雷达检测却不满足含有岛屿最小右边界的检测的话会出错。

代码如下:

//
//  main.cpp
//  poj1328
//
//  Created by Saber on 15/10/7.
//  Copyright © 2015年 Saber. All rights reserved.
//

#include <iostream>
#include <cmath>
#include <algorithm>
#include <cstdio>
using namespace std;
const int MAX = 1001;
struct island
{
    double left, right;
};
island a[MAX];

int mycmp(const island &a, const island &b)
{
    return a.left < b.left;
}

int main()
{
    int n, d;
    double x1, y1;
    int num = 1;
    while (~scanf("%d %d", &n, &d) && (n || d))
    {
        bool flag = true;
        for (int i = 0; i < n; i++)
        {
            scanf("%lf %lf", &x1, &y1);
            a[i].left = x1 - sqrt(d*d*1.0 - y1*y1);
            a[i].right = x1 + sqrt(d*d*1.0 - y1*y1);
            if (fabs(y1) > d)
                flag = false;
        }
        sort(a, a+n, mycmp);
        int ans = 1;
        island temp = a[0];
        for (int i = 1; i < n; i++)
        {
            if (temp.right < a[i].left)
            {
                ans++;
                temp = a[i];
            }
            else if (temp.right > a[i].right)
            {
                temp = a[i];//将雷达位置调换到最小右边界的岛屿,否则WA...
            }
        }
        if (flag)
            cout << "Case " << num << ": " << ans <<endl;
        else
            cout << "Case " << num << ": " << -1 <<endl;
        num++;
    }
    return 0;
}




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

相关推荐

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

C语言 poj1328题

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

H.千面的博客 988

贪心算法_POJ1328和POJ2586小结

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

Alanadle的博客 386

最大不相交子集 POJ1328

先解释一下最大不相交子集: 设有许多集合[Ai,Bi]; 最大不相交子集: 所有集合相交,产生的子集,这些产生的子集中的任意两个子集相交都为空集,产生的子集一定是最大的。 算法框架: for (int i ;i < n ;i++) { if (子集i的左边 > 子集j的右边 (i > j) ) { 最大不相交子集个数加一; 将j变为i; ...

weixin_44368514的博客 2996

2021英伟达暑期实习面经(芯片设计)

2021英伟达暑期实习面经(芯片设计前端/DFT) 准备了将近一个月,终于赶在三月的最后一天拿到了offer,暑期实习算是上岸了,后面还有阿里/华为等一些国内公司的面试,但既然拿到了nv的offer,后面的先就当积累面试经验吧~ 网上关于nv的实习or秋招面经很少,硬件岗的更少(约等于没有好吧)。之前准备面试的时候,在网上找了半天,好像就只在牛客网上见过一篇关于nv硬件岗的面经,幸好当时认真看了哈哈。所以既然幸运上岸了,想趁自己还记得,record一下,希望可以帮到有缘人呀~ 好了,废话不多说,开始正题。

Hadleysjtu的博客 1万+

数仓 - 促销敏感度、评论敏感度

1. 促销敏感度 步骤1. 首先按照最后一次下单时间及有无复购情况将用户分为四大群体: 近一年有购物行为且复购的用户 -- L1 (今年复购用户) 近一年有购物行为但无复购的用户 --L2 (今年一单购用户) 最后一次下单时间在1年之前且有复购的用户 --L3 (今年无购且只有一单用户) 最后一次下单时间在1年之前但无复购的用户 -- L4 (今年无购多单用户) 步骤2. 每一类用户群再根据优惠订单占比、每单优惠金额占比的平均值、优惠金额这三个指标进行k-means聚类,分为: 非常敏感 -

weixin_41332009的博客 1899

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

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

bu_shushu的博客 1280

欧姆龙SYSMAC STUDIO如何与基恩士SR-1000进行EIP通信

简要介绍一下扫码枪和欧姆龙sysmac的配置

weixin_42031602的博客 4785

POJ 1328 安装雷达 - (贪心)

题目:http://poj.org/problem?id=1328 贪心:按区间右端点排序 岛屿对应放置雷达的区间 在区间的右端点放置雷达,若之后区间的左端点 1.<=上一个雷达,说明被覆盖,跳过 2.>上一个雷达,则在这个区间右端点放置雷达 若某个区间左端点>上一个雷达,那么这个区间至少要有一个雷达, 故产生了安装雷达数目的下界,下界的可构造性由程序给出。 #include &...

rsy56640的博客 597

【实战案例】IBM V3500存储控制器故障诊断与更换全流程解析

本文详细解析了IBM Storwize V3500存储控制器发生故障后的完整处理流程。通过还原真实故障现场,介绍了如何利用服务助手精准定位缓存模块损坏的根源,并逐步指导完成控制器备件准备、核心部件移植更换、系统上线同步及全面功能验证的全过程,为存储运维人员提供了一份实用的实战指南。

weixin_29269441的博客 549

yolov5 部署jetson nano(通用) 保姆级教学

Jetson nano从配置环境到yolov5成功推理检测全过程 文章目录Jetson nano从配置环境到yolov5成功推理检测全过程一、烧录镜像二、配置环境并成功推理1.更新系统和包2、配置环境2.1 配置CUDA2.2 修改Nano板的显存1.打开终端输入:2.修改nvzramconfig.sh文件:3.重启:4.终端输入:3、安装archiconda(也就是jetson nano板上的anaconda)1.下载地址:2.安装:3.测试conda:4.创建运行yolov5的虚拟环境:5.在conda

weixin_44312422的博客 3万+

【贪心算法】POJ1328

【贪心算法】POJ1328

m0_71009069的博客 535

基于Simulink开发一个完整的直驱式永磁同步发电机DDPMSG仿真模型

需求分析直驱式永磁同步发电机(Direct-Drive Permanent Magnet Synchronous Generator, DDPMSG)广泛应用于风力发电、海洋能发电等可再生能源领域。与传统的齿轮箱驱动系统相比,DDPMSG具有结构简单、效率高、可靠性好等优点,能够直接将机械能转换为电能,减少了中间传动环节,降低了维护成本。本项目将基于Simulink平台,开发一个完整的DDPMSG仿真模型,模拟其在风力发电场景中的应用。我们将详细讲解如何设计和实现该系统,并结合实际应用案例进行说明。

MHD0815的博客 465

poj1328(贪心)

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

Paige's Blog 1797

Hermes 教程 05:多 Agent 编排

本文介绍了Hermes v0.13.0中的四种多Agent协作模式:1)delegate_task快速子任务模式,适合2-3个独立并行任务;2)spawn子Agent模式,实现零成本并行多步流水线;3)tmux交互子Agent模式,支持长期自主任务;4)全新Kanban看板系统,提供持久化AI团队协作框架。各模式在隔离级别、时长、工具访问和适用场景上存在差异,其中spawn模式通过独立上下文窗口实现零上下文成本。文章详细说明了每种模式的使用方法、限制条件和典型应用场景,并提供了具体代码示例和可视化流程图。K

程序猿_三产 537

015、架构_配置文件_管理节点(proxymanager.ini)

该配置文件中的参数在后台配置,两种生效方式:*所有参数重启生效。*部分参数可以使用工具dbtool动态生效。动态生效命令为:dbtool-pm-load-config。配置文件“proxymanager.ini”用于设置元数据管理模块的信息。文件路径为“~/etc”。配置文件“proxymanager.ini”是普通的文本文件。默认值proxymanager-alarmconfutf8.txt。配置错误或不配置,PM无法连接MDS,无法服务。获取元数据失败超时处理时间。异常时请求启动对等回滚。

Oracle/MySQL 到 国产信创数据库|迁移 · 调优 · 信创替换 329

poj 1328 贪心+qsort

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

weixin_30907523的博客 103

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

poj1328 Radar Installation —— 贪心

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

alince20008的博客 174

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

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

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

张小V 558

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

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

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

学无纸巾 362

贪心- poj1328 Radar Installation

题目: http://poj.org/problem?id=1328 题意: 给定若干点,以及半径长度d,问至少需要多少个这样的半圆才能把所有点覆盖掉 思路: 一开始的贪心策略是把点按照x坐标升序排序,每次把圆心定在尽可能右边的位置,然后一直wa >_ 这种策略会在 2 3 0 2 0 3 这种数据上被坑 同理对排序加上x相同时,y降序排序的优化后,会死在这种数据上 2 3

Keith_windniw的专栏 388
上一篇: POJ 2352(顺路讲解一下树状数组)
下一篇: POJ分类很好很有层次感
_Phoenix
博客等级 码龄12年 27粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值