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

GESP5级C++考试语法知识(十四、贪心算法(二)区间问题(提高级))

《贪心王国·打点小精灵大作战》 一、故事开场在贪心王国里有一片神秘的区域森林 森林里有很多“魔法区间”比如 [1,5] [2,6] [4,7] 危机来了每个区间里都有怪物 国王下令⚠️ 每个区间必须至少放2个守护点‍♂️ 小勇士的任务 放尽量少的点 但要满足每个区间 ≥ 2个点 二、让学生思考汉克老师问 点放在哪里比较好 学生纷纷说放左边放中间放右边 三、关键发现贪心思想汉克老师说 如果你把点放在右边…… 会不会更容易被后面的区间用到 结论点尽量往右放 四、一起玩一个例子区间[1,4] [2,5] [3,6] 第一步排序按右边 已经排好了[1,4] → [2,5] → [3,6]‍♂️ 第二步处理第一个区间 [1,4] 需要 2 个点我们放 3 和 4靠右 现在发生什么这两个点在 [1,4] ✔在 [2,5] ✔在 [3,6] ✔ 结果 后面两个区间也被“顺便解决了” 五、最终答案 只用了2个点 六、总结规律1、 核心策略每次补点都往区间右边放2、 为什么 因为 越靠右 → 越容易帮助后面的区间 七、算法步骤✅ 第1步排序按右端点 谁结束早先处理谁✅ 第2步一个区间一个区间看✅ 第3步如果这个区间不够2个点 就补点✅ 第4步补在哪里 放在rightright-1✅ 第5步这些点可以“帮助后面的区间” 八、参考程序#include iostream #include algorithm using namespace std; // 定义区间 struct Interval { int left; // 左端点 int right; // 右端点 int need; // 还需要几个点初始为2 }; // 排序规则按右端点从小到大 bool cmp(Interval a, Interval b) { if (a.right ! b.right) return a.right b.right; else return a.left b.left; } int main() { int n; cin n; Interval a[10005]; // 输入 for (int i 0; i n; i) { cin a[i].left a[i].right; a[i].need 2; // 每个区间需要2个点 } // 排序 sort(a, a n, cmp); int answer 0; // 选了多少个点 // 遍历每个区间 for (int i 0; i n; i) { // 如果这个区间还缺点 while (a[i].need 0) { // 我们选择点优先选右端点 int chosen_point; if (a[i].need 2) chosen_point a[i].right - 1; // 第一个点 else chosen_point a[i].right; // 第二个点 answer; // 选了一个点 // 用这个点去“帮助”后面的区间 for (int j i; j n; j) { if (a[j].left chosen_point chosen_point a[j].right) { if (a[j].need 0) a[j].need--; } } } } cout answer endl; return 0; } 八、最容易犯错的地方❌ 错误1点放左边 ❌ 很亏 后面用不到❌ 错误2不排序 ❌ 会乱 贪心会失败❌ 错误3忘记“要2个点” ❌ 有学生只放1个❌ 错误4不会“共享点” ❌ 以为每个区间都要重新放 实际 一个点可以帮多个区间 九、课堂小游戏 游戏1你来放点区间[1,3] [2,4] [3,5] 学生们 你会放哪里 游戏2对比 放左边 vs 放右边学生发现右边更强 十、背诵口诀区间要点多全部往右挪越靠右越值钱 十一、本课总结同学们终于学会了✨ “最强打点术”同学们发现 一个点不只是一个点 而是可以影响很多区间汉克老师笑着说“这就是贪心的智慧——用最少的资源做最多的事情。”

相关文章:

GESP5级C++考试语法知识(十四、贪心算法(二)区间问题(提高级))

🌟《贪心王国打点小精灵大作战》🏰 一、故事开场在贪心王国里,有一片神秘的区域森林 🌲森林里有很多“魔法区间”,比如:👉 [1,5] 👉 [2,6] 👉 [4,7]😈 危机来…...

别再只用相关系数了!用Matlab的wcoherence函数,5分钟画出时间序列的交叉小波相干图

别再只用相关系数了!用Matlab的wcoherence函数,5分钟画出时间序列的交叉小波相干图 当我们面对两组时间序列数据时,传统的相关系数只能给出一个笼统的关联度指标,而无法揭示不同时间尺度下的动态关联模式。比如分析股票价格与成交…...

基于Coze平台的课堂语音互动机器人设计与实现

基于Coze平台的课堂语音互动机器人设计与实现 摘要 随着人工智能技术的快速发展,大语言模型驱动的智能体(Agent)在教育领域的应用日益广泛。本文基于字节跳动推出的Coze(扣子)AI开发平台,设计并实现了一款面向课堂教学场景的语音互动机器人。该机器人模拟多个具有鲜明性…...

从个人到团队:基于快马平台实战开发一个可协作的WorkBuddy任务管理工具

从个人到团队:基于快马平台实战开发一个可协作的WorkBuddy任务管理工具 最近团队内部一直在寻找一个轻量级的任务协作工具,市面上现有的方案要么功能过于复杂,要么定制化程度不够。于是决定自己动手,用InsCode(快马)平台快速搭建…...

如何一键获取Steam游戏清单:Onekey工具的终极指南

如何一键获取Steam游戏清单:Onekey工具的终极指南 【免费下载链接】Onekey Onekey Steam Depot Manifest Downloader 项目地址: https://gitcode.com/gh_mirrors/one/Onekey 还在为复杂的Steam游戏清单下载而烦恼吗?Onekey Steam Depot清单下载工…...

当Matplotlib遇到Seaborn:网格线风格如何统一?一个案例搞定多图排版

当Matplotlib遇到Seaborn:网格线风格统一与多图排版实战指南 在数据可视化领域,Matplotlib和Seaborn是Python生态中最常用的两个库。Matplotlib提供了基础的绘图功能,而Seaborn则在Matplotlib基础上封装了更高级的统计图表和美观的默认样式。…...

数字英语验证码识别API集成指南

本文将为您介绍数字英语验证码识别API的集成指南。该API基于深度学习技术,能够识别可变长度的英语数字验证码。您只需输入验证码图片的内容,即可获取验证码的识别结果。 环境准备 在使用API之前,您需要在 数字英语验证码识别API 页面申请相…...

Suno Tasks API 的集成与使用指南

简介 Suno Tasks API 是 Ace Data Cloud 提供的一项强大服务,主要用于查询通过 Suno Audios Generation API 或 Suno Lyrics Generation API 生成的任务的执行状态。本文将详细介绍如何集成和使用 Suno Tasks API,帮助开发者轻松查询任务状态&#xff0…...

【Java服务网格实战权威指南】:20年架构师亲授Istio+Spring Cloud双模落地的5大避坑法则

更多请点击: https://intelliparadigm.com 第一章:Java服务网格的核心演进与双模架构认知 Java 生态长期以 Spring Cloud 和 Dubbo 为代表构建微服务治理能力,但随着云原生基础设施成熟,服务网格(Service Mesh&#x…...

新手入门Graphify:基于快马平台实现首个社交网络关系图

今天想和大家分享一个特别适合新手入门的Graphify项目——用D3.js实现社交网络关系图。作为刚接触图论可视化的小白,我最初看到那些复杂的连线图总觉得无从下手,直到在InsCode(快马)平台尝试了这个项目,才发现原来入门可以这么简单。 搭建基础…...

GARbro视觉小说资源浏览器:5步掌握游戏资源提取终极指南

GARbro视觉小说资源浏览器:5步掌握游戏资源提取终极指南 【免费下载链接】GARbro Visual Novels resource browser 项目地址: https://gitcode.com/gh_mirrors/ga/GARbro GARbro是一款专为视觉小说爱好者设计的游戏资源浏览器,能够帮助你轻松访问…...

调试实录:一次SATA硬盘读写异常,我是如何通过分析FIS命令流定位到内核驱动内存分配Bug的

从FIS命令流异常到内核内存分配:一次SATA硬盘故障的深度追踪 那是一个再普通不过的周四下午,直到监控系统突然发出刺耳的警报——生产环境中的多台服务器相继报告SATA存储设备出现间歇性读写失败。作为团队中负责存储子系统稳定的工程师,我迅…...

别再死记UNet结构了!用PyTorch手搓一个医学细胞分割模型(附ISBI数据集实战代码)

别再死记UNet结构了!用PyTorch手搓一个医学细胞分割模型(附ISBI数据集实战代码) 医学图像分割一直是计算机视觉领域的重要研究方向,尤其在细胞分析、病理诊断等场景中,精确的分割结果能为后续研究提供可靠基础。传统方…...

保姆级教程:用`ipvsadm`和`iptables-save`命令,一步步拆解K8s Service的流量转发路径

深入拆解Kubernetes Service流量转发:从命令行视角看ipvs与iptables的协同 当你第一次在Kubernetes集群中创建一个Service时,有没有好奇过这个虚拟IP背后究竟发生了什么?为什么一个ClusterIP能够稳定地将流量路由到可能随时变化的Pod上&#…...

2025最权威的五大AI科研助手横评

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 一键论文生成器是智能写作辅助系统,运用自然语言处理和深度学习技术,…...

3步掌握Krita AI绘画:面向初学者的完整指南

3步掌握Krita AI绘画:面向初学者的完整指南 【免费下载链接】krita-ai-diffusion Streamlined interface for generating images with AI in Krita. Inpaint and outpaint with optional text prompt, no tweaking required. 项目地址: https://gitcode.com/gh_mi…...

LinkSwift:八大网盘直链解析工具终极指南,一键解锁高速下载新体验

LinkSwift:八大网盘直链解析工具终极指南,一键解锁高速下载新体验 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘…...

3步实战精通Photoshop AVIF插件:让你的图像体积减少60%的终极指南

3步实战精通Photoshop AVIF插件:让你的图像体积减少60%的终极指南 【免费下载链接】avif-format An AV1 Image (AVIF) file format plug-in for Adobe Photoshop 项目地址: https://gitcode.com/gh_mirrors/avi/avif-format 你是否曾经因为网站图片加载太慢而…...

DeepGEMM 核心技术解析:批次不变性、确定性与 FP8 优化的统一

核心主张: DeepGEMM 的价值不是更高的 FLOPS,而是将效率、确定性、批次不变性三者统一——这才是大规模分布式训练真正需要的。 适读人群: 大模型架构师、Infra 工程师、关注 AI 底层优化的技术决策者 阅读时长: 约 18 分钟 核心收益: 理解 GEMM 优化的工程维度,掌握批次…...

WinBtrfs v1.9深度解析:如何在Windows上构建企业级Btrfs存储解决方案

WinBtrfs v1.9深度解析:如何在Windows上构建企业级Btrfs存储解决方案 【免费下载链接】btrfs WinBtrfs - an open-source btrfs driver for Windows 项目地址: https://gitcode.com/gh_mirrors/bt/btrfs WinBtrfs v1.9作为Windows平台最成熟的开源Btrfs驱动程…...

3步解锁Nintendo Switch无限潜能:大气层系统完整指南

3步解锁Nintendo Switch无限潜能:大气层系统完整指南 【免费下载链接】Atmosphere-stable 大气层整合包系统稳定版 项目地址: https://gitcode.com/gh_mirrors/at/Atmosphere-stable 你是否想让自己的Nintendo Switch拥有更多可能性?大气层&#…...

终极指南:5分钟掌握微信聊天记录解密,找回丢失的珍贵数据

终极指南:5分钟掌握微信聊天记录解密,找回丢失的珍贵数据 【免费下载链接】WechatDecrypt 微信消息解密工具 项目地址: https://gitcode.com/gh_mirrors/we/WechatDecrypt 你是否曾经因为手机故障、系统重装或误操作,导致那些珍贵的微…...

OpenSpeedy终极指南:免费开源游戏变速工具完整教程

OpenSpeedy终极指南:免费开源游戏变速工具完整教程 【免费下载链接】OpenSpeedy 🎮 An open-source game speed modifier. 项目地址: https://gitcode.com/gh_mirrors/op/OpenSpeedy OpenSpeedy是一款完全免费且开源的游戏变速工具,专…...

两小时速成:如何用快马AI将你的小程序创意快速变为可运行原型

作为一个16岁的中学生,我最近用InsCode(快马)平台在两小时内就做出了一个学习计划管理小程序。整个过程比想象中简单多了,特别适合像我这样刚接触编程的新手。下面分享我的快速原型开发经验: 明确需求很关键 在开始前,我先用纸笔列…...

全栈项目模板:现代Web应用开发的瑞士军刀与最佳实践

1. 项目概述:一个全栈开发者的“瑞士军刀”在当今快节奏的软件开发领域,无论是独立开发者还是小型团队,启动一个新项目时最耗时的往往不是核心业务逻辑的编写,而是那些重复性的基础搭建工作:前后端框架选型、环境配置、…...

大语言模型驱动参数化设计:ChatGPT与Grasshopper集成实战

1. 项目概述:当参数化设计遇上大语言模型 如果你是一名建筑师、设计师,或者任何在Rhino和Grasshopper环境中工作的创意人士,那么你肯定对“参数化设计”这个概念不陌生。通过定义一系列参数和逻辑关系,我们可以创建出能够响应变化…...

【2026高频交易基础设施白皮书节选】:C++内存池必须支持的4项新特性——PCIe Gen6 DMA直通、TSX-E增强、RAS校验及冷热页动态迁移

更多请点击: https://intelliparadigm.com 第一章:2026高频交易内存池演进全景图 2026年,全球头部量化机构已普遍将内存池(Memory Pool)从传统 slab 分配器升级为面向低延迟场景的零拷贝、NUMA-aware、硬件卸载协同型…...

高效鼠标连点器实战指南:5步配置方案提升工作效率300%

高效鼠标连点器实战指南:5步配置方案提升工作效率300% 【免费下载链接】MouseClick 🖱️ MouseClick 🖱️ 是一款功能强大的鼠标连点器和管理工具,采用 QT Widget 开发 ,具备跨平台兼容性 。软件界面美观 ,…...

观察 Taotoken 在多模型切换时的延迟表现与稳定性

观察 Taotoken 在多模型切换时的延迟表现与稳定性 1. 多模型切换的基本体验 在实际开发项目中,我们经常需要根据任务特性切换不同的大模型。通过 Taotoken 平台,可以在不修改代码的情况下快速切换模型。具体操作是在控制台的模型广场选择目标模型&…...

OpenWrt网易云音乐解锁插件终极指南:3分钟告别灰色歌单

OpenWrt网易云音乐解锁插件终极指南:3分钟告别灰色歌单 【免费下载链接】luci-app-unblockneteasemusic [OpenWrt] 解除网易云音乐播放限制 项目地址: https://gitcode.com/gh_mirrors/lu/luci-app-unblockneteasemusic 还在为网易云音乐里那些灰色的"无…...