当前位置: 首页 > article >正文

蓝桥杯算法精讲:贪心算法之区间问题深度剖析

目录前言一、贪心算法1.1 区间问题1.1.1 线段覆盖1.1.2 Radar Installation1.1.3 Sunscreen1.1.4 牛栏预定结语 云泽Q个人主页 专栏传送入口: 《C语言》《数据结构》《C》《Linux》《蓝桥杯系列》⛺️遇见安然遇见你不负代码不负卿~前言大家好啊我是云泽Q欢迎阅读我的文章一名热爱计算机技术的在校大学生喜欢在课余时间做一些计算机技术的总结性文章希望我的文章能为你解答困惑~一、贪心算法1.1 区间问题区间问题是另一种比较经典的贪心问题。题目面对的对象是一个一个的区间让我们在每个区间上做出取舍。这种题目的解决方式一般就是按照区间的左端点或者是右端点排序然后在排序之后的区间上根据题目要求制定出相应的贪心策略进而得到最优解。具体是根据左端点还是右端点排序升序还是降序一般是假设一种排序方式并且制定贪心策略当没有明显的反例时就可以尝试去写代码。1.1.1 线段覆盖凌乱的yyy / 线段覆盖解法按照区间左端点从小到大排序当两个区间「重叠」的时候我们必须要舍弃一个。为了能够「在移除某个区间后保留更多的区间」我们应该把「区间范围较大」的区间移除。因此以第一个区间为基准遍历所有的区间如果重叠选择「最小的右端点」作为新的基准如果不重叠那么我们就能多选一个区间以「新区间为基准」继续向后遍历。#includeiostream#includealgorithmusingnamespacestd;typedeflonglongLL;constintN1e610;structnode{LL l;LL r;}a[N];LL n;boolcmp(nodex,nodey){returnx.ly.l;}intmain(){cinn;for(inti1;in;i)cina[i].la[i].r;sort(a1,a1n,cmp);//以第一个区间为右端点第一个区间必选LL ret1;//以第一个区间的右端点为基准向后选择LL right_sidea[1].r;for(inti2;in;i){LL lefta[i].l,righta[i].r;//重叠if(leftright_side){//保留右端点较小的区间right_sidemin(right_side,right);}else{//不重叠ret;right_sideright;}}coutretendl;return0;}1.1.2 Radar InstallationRadar Installation如图所示当一个岛屿的坐标已知其实可以计算出当雷达放在 x 轴的哪段区间时可以覆盖到这个岛屿根据勾股定理得ax的长度 l根号下d2−y2那么雷达所处的范围就是 [x - lx l]。因此针对每一个岛屿我们都可以算出一个能够覆盖它的区间。原问题就变成给定一些区间从中选取一些区间尽量多的重叠区间能够覆盖掉所有的岛屿最少能够选多少个。就从二维平面转化成一维线段#includeiostream#includecmath//开根号用#includealgorithm//sqortusingnamespacestd;//区间数/岛屿数constintN1010;doubled;intn;//存储每个岛屿对应的「雷达可覆盖区间」x轴上的区间structnode{//计算的时候因为涉及开根号所以这里的数据类型是doubledoublel;doubler;}a[N];// 排序比较函数按区间左端点升序排序boolcmp(nodex,nodey){returnx.ly.l;}intmain(){intcnt0;// 记录测试用例的编号Case 1、Case 2...while(cinnd,nd){cnt;//标记是否存在无法覆盖的岛屿y dboolflagfalse;// 遍历所有岛屿计算每个岛屿对应的雷达覆盖区间for(inti1;in;i){doublex,y;cinxy;//岛屿的y坐标超过雷达半径垂直距离已超范围无法覆盖if(yd)flagtrue;// 勾股定理doublelsqrt(d*d-y*y);//计算该岛屿对应的雷达覆盖区间[x-l, xl]a[i].lx-l;a[i].rxl;}coutCase cnt: ;// 如果存在无法覆盖的岛屿直接输出-1if(flag)cout-1endl;else{sort(a1,a1n,cmp);//最少雷达数初始为1至少需要1个雷达覆盖第一个区间intret1;//用第一个区间右端点作为基准判断第二个区间是否与其重叠doublera[1].r;for(inti2;in;i){doublelefta[i].l;doublerighta[i].r;//情况1当前区间与已覆盖区域重叠能被当前雷达覆盖if(leftr){//只有取更小的右端点才能同时覆盖重叠的所有区间rmin(r,right);}//请况2当前区间与已覆盖区域不重叠需要新增雷达else{ret;//新雷达的最优位置为当前区间的右端点rright;}}coutretendl;}}return0;}要点补充为什么把所有区间按左端点 l 从小到大排序。这样我们可以从左到右处理区间保证每次处理的都是当前最靠左的区间不会漏掉任何需要覆盖的区域。while (cin n d, n d)如果括号内有一个逗号隔开的话就是一个逗号表达式其会从左向右执行前面cin n d执行完后当n和d不为0的时候才会继续执行下一步二者为0时while循环跳出1.1.3 Sunscreen1.1.4 牛栏预定结语

相关文章:

蓝桥杯算法精讲:贪心算法之区间问题深度剖析

目录前言一、贪心算法1.1 区间问题1.1.1 线段覆盖1.1.2 Radar Installation1.1.3 Sunscreen1.1.4 牛栏预定结语🎬 云泽Q:个人主页🔥 专栏传送入口: 《C语言》《数据结构》《C》《Linux》《蓝桥杯系列》⛺️遇见安然遇见你,不负代码…...

二分与贪心专题

ch02 - 二分与贪心专题 A - 删题 题意:在数据可以随意排列的情况下,要求相邻两项差值不超过 k,问最少删掉多少数策略:把数值接近的凑一起,先给所有数据排序。 按照该要求可以把数组分成若干段,每段内满足该…...

【C++ 笔记】从 C 到 C++:核心过渡

【C 笔记】从 C 到 C:核心过渡 这是一篇系统、实用的过渡指南,帮助熟悉 C 语言的开发者快速掌握 C 的核心差异与现代特性。C 被誉为“带类的 C”(C with Classes),它几乎完全兼容 C(C 是 C 的超集&#xff…...

【最全】2026年OpenClaw(Clawdbot)京东云3分钟安装及使用流程

【最全】2026年OpenClaw(Clawdbot)京东云3分钟安装及使用流程。OpenClaw是什么?OpenClaw能做什么?OpenClaw怎么部署?OpenClaw(前身为Clawdbot/Moltbot)作为开源、本地优先的AI助理框架&#xff…...

LeetCode第八题无重复字符的最长字串

给定一个字符串 s ,请你找出其中不含有重复字符的 最长 子串 的长度。示例 1:输入: s "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。注意 "bca" 和 "cab" 也是正确答案。示例…...

探索基于反向策略的麻雀搜索算法

基于反向策略的麻雀搜索算法:通过不断的生成候选位置、评估选择最佳位置、放置麻雀、回溯等步骤,逐步扩展棋盘状态,寻找解决麻雀问题的最优解。 (内附改进原理文档,包您看懂,有意咨询,非诚勿扰) 基于反向策…...

基于主从博弈的社区综合能源系统分布式协同优化运行策略探索

基于主从博弈的社区综合能源系统分布式协同优化运行策略 平台:Matlabyalmipcplex 随着能源市场由传统的垂直一体式结构向交互竞争型结构转变,社区综合能源系统的分布式特征愈发明显,传统的集中优化方法难以揭示多主体间的交互行为。 该文提出…...

联想人工智能岗面试题精选:10道高频考题+答案解析(附PDF)

联想简介 联想是全球领先的智能设备和服务提供商,业务涵盖PC、服务器、存储、网络设备等硬件产品,以及云计算、人工智能、物联网等前沿技术领域。在人工智能方向,联想聚焦边缘计算、计算机视觉、自然语言处理等技术研发,致力于将AI能力融入硬件产品和行业解决方案。面试风…...

AI专著写作新突破!借助工具,短时间打造专业学术专著

学术专著的主要价值在于其内容的系统性与逻辑性闭合,但这一点也是写作中最难以攻克的挑战。与聚焦单一问题的期刊论文不同,专著要求构建包括绪论、理论基础、核心研究、实际应用、结论的全面框架,各个章节必须层层递进、前后呼应,…...

**发散创新:PyTorch中算子融合的实战优化与性能跃迁**在深度学习

a发散创新:PyTorch中算子融合的实战优化与性能跃迁 在深度学习模型推理阶段,算子融合(Operator Fusion) 是提升执行效率的核心技术之一。它通过将多个小算子合并为一个复合算子,减少内存访问、降低调度开销&#xff0c…...

Python-flask小程序 电子书阅读器系统的含章节3_lmi7c-vue

目录需求分析与功能设计技术栈选型与搭建核心功能实现路径前后端交互设计部署与优化方案测试与迭代计划项目技术支持可定制开发之功能创新亮点源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作需求分析与功能设计 明确电子书阅读器的核心功能…...

基于OpenSEES平台的单柱墩模型:考虑滑移粘接捏缩效应

基于opensees 平台建立的单柱墩模型 考虑了滑移粘接的捏缩效应 内容包括有 1.墩柱模型建模全过程及源代码 2.钢筋混凝土之间的粘接滑移 3.基于位移控制的滞回分析代码最近在搞结构工程的数值模拟,用到了OpenSEES这个强大的开源有限元平台。今天就和大家分享一下基于…...

接龙数列 、 子串简写 与 砍树

[蓝桥杯 2023 省 B]接龙数列 对于一个长度为 K 的整数数列:A1​,A2​,…,AK​,我们称之为接龙数列当且仅当 Ai​ 的首位数字恰好等于 Ai−1​ 的末位数字(2≤i≤K)。例如 12,23,35,56,61,11 是接龙数列;12,23,34,56 不…...

LangChain开发-执行器深入解析:协调模型、工具与记忆的运行时

一、AgentExecutor的角色 1.1 什么是AgentExecutor? AgentExecutor是Agent的运行时环境,负责: ┌─────────────────────────────────────────────┐ │ AgentExecutor 职责 …...

公交刷卡数据挖掘用户通勤时间

3.13给定一组 公交卡的刷卡数据记录,每条数据记录以下信息a.user_idb.station_idc.type: 上车or下车or进站or出站d.timestamp表示该次刷卡的时间问题:使用以上数据,如何挖掘用户的上班时间和下班时间?...

中专机电专业最实用的证书是什么?

前段时间和几位在制造企业工作的朋友聊天,他们提到一个现象:现在的工厂车间里,自动化设备越来越多,数控机床、工业机器人、智能生产线逐步普及。但真正能把这些设备用好、能处理设备产生的大量数据的人才,却不太好找。…...

智能科学与技术毕业设计2026开题指导

1 引言 毕业设计是大家学习生涯的最重要的里程碑,它不仅是对四年所学知识的综合运用,更是展示个人技术能力和创新思维的重要过程。选择一个合适的毕业设计题目至关重要,它应该既能体现你的专业能力,又能满足实际应用需求&#xff…...

分心走神的儿童注意力缺陷是什么?影响因素和应对策略有哪些?

儿童注意力缺陷的概念与特征详解 儿童注意力缺陷,通常被称为ADHD(注意力缺陷多动障碍),是一种影响儿童学习和日常生活的常见神经发育障碍。ADHD的主要特征包括持续的注意力不集中、冲动行为和过度活动。这些症状不仅会妨碍孩子在学…...

拒绝Python依赖!SpringBoot 3 + ONNX Runtime 打造纯Java版YOLOv8通用检测服务:从模型转换到高并发API封装的全链路实战

前言 “部署个AI模型,还得在服务器上装Python环境、配Conda、解决各种pip依赖冲突?” “Java后端调用Python脚本,进程间通信(IPC)慢如蜗牛,高并发下线程池直接爆满?” “运维同事抱怨&#xff1…...

Scholar-Agent:你的全自动文献调研工具

全网自动“捞”论文:你不再需要手动在 arXiv、谷歌学术和本地 Zotero 之间切换。它会自动理解你的意图,同步从云端(最新论文)和本地(你收藏过的论文)进行海量搜索。 告别“论文标题党”:避免大…...

探索 BP 神经网络 PID 控制在 Simulink 中的仿真之旅

bppid BP神经网络 PID控制 simulink仿真 基于S函数.m文件的BP神经网络 可以运行出结果,有说明文档跟对应文章,包括一篇基于bppid的无刷直流电机控制的本科论文,很容易看懂。 描述真实。在控制领域,BP 神经网络与 PID 控制的结合总…...

Python-flask基于微信小程序的学生运动打卡交流系统的设计与实现

目录项目技术支持可定制开发之功能创新亮点源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作项目技术支持 前端开发框架:vue.js 数据库 mysql 版本不限 数据库工具:Navicat/SQLyog/ MySQL Workbench等都可以 后端语言框架支持&am…...

算法入门(一):什么是算法?

# 算法入门(一):什么是算法?## 什么是算法?算法就是**解决问题的方法**,就像做菜的菜谱。## 算法的重要性- 💼 **面试必考** - 大厂面试手撕代码- 🧠 **锻炼思维** - 解决问题更高效…...

2026年10款热门降AI率工具全测评,轻松搞定论文降AI难题(持续更新)

2026年10款热门降AI率工具全测评,轻松搞定论文降AI难题(持续更新) 学弟学妹们先别慌!是不是刚用AI写完论文,兴冲冲去查AIGC率,结果直接飙到90%?导师还在催稿,心态瞬间崩了有没有&…...

怎么把claude code的claude模型的url和key永久设置成自己的

每次打开终端都要手动输入 export 确实非常繁琐。要让这些配置永久生效,你需要将 export 命令写入到你电脑终端(Shell)的默认配置文件中。这样,每次打开新的终端窗口时,系统都会自动为你加载这些变量。 以下是针对 mac…...

Simpack轨道之波磨不平顺设置那些事儿

simpack轨道,波磨不平顺设置,不提供教程。最近在研究Simpack轨道相关的内容,其中波磨不平顺设置这块还挺有意思的,今天就来跟大家聊聊。 波磨不平顺对轨道系统的影响 在轨道交通领域,波磨不平顺可不是个小问题。简单来…...

【2025最新】基于SpringBoot+Vue的扶贫助农系统管理系统源码+MyBatis+MySQL

系统架构设计### 摘要 在乡村振兴战略的推动下,扶贫助农工作成为社会关注的焦点。传统的扶贫管理方式存在信息不透明、效率低下等问题,亟需通过信息化手段提升管理效率和服务质量。扶贫助农系统通过整合资源、优化流程,实现帮扶信息的精准传递…...

从零到一:我设计了一个抗量子计算的哈希函数 REV-512

引言 你有没有想过,如果量子计算机真的问世,现在保护我们网络安全的密码算法会不会瞬间失效? 这不是科幻电影的情节。Grover算法可以将SHA-256的原像攻击复杂度从2⁵⁶降至2⁸——虽然今天这仍是天文数字,但量子计算的进步正在不…...

SourceTree 推送后修改commit message

目录一. 情景说明二. 修改最后一次commit时的message三. 修改指定提交的commit message一. 情景说明 🔷如下图所示,在自己的分支上将代码推送到远程仓库之后,发现代码commit时写的注释不对,需要修改。 💥注意&#xf…...

【Win11】受不了Win11右键菜单老是要多点一下?一招变回Win10经典样式

前言 刚换Win11的朋友,最烦的是不是右键菜单?以前在Win10上右键一下啥都能看到,现在要点“显示更多选项”才能找到想要的(比如解压缩文件),多了一步操作,每天要烦几十次。 其实改回Win10的经典…...