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

作业4

问题:数轴上有n个闭区间[ai, bi]。取尽量少的点,使得每个区间内都至少有一个点(不同区间内含的点可以是同一个)

我的策略:
1.将所有区间按照右端点从小到大排序
2.初始化当前选择的点为第一个区间的右端点,计数器置为 1
3.依次检查后续每个区间,若当前区间的左端点大于已选择的点(即该区间不包含该点),则选择该区间的右端点作为新点,计数器加 1
4.输出计数器的值,即为最少需要的点数

证明:存在一个最优解,其第一个点选择的是右端点最小的区间的右端点。
设所有区间按右端点排序后为 I₁, I₂, …, I_n,其中 I₁ 的右端点最小。考虑任意一个最优解 OPT,设 OPT 中第一个点(最小的点)为 x。
若 x = I₁.right,则已满足。
若 x < I₁.right,则由于 I₁.right 是最小的右端点,所以 x < I₁.right ≤ I₁.left(否则若 x ≥ I₁.left,则 x 在 I₁ 内,但 x < I₁.right,那么 I₁.right 就不是最小右端点,矛盾)。因此 x 不在 I₁ 内,但 OPT 需要覆盖 I₁,所以 OPT 中必有另一个点 y ≥ I₁.left。此时可以用 I₁.right 替换 x,仍然覆盖所有区间(因为任何包含 x 的区间,其左端点 ≤ x < I₁.right,且右端点 ≥ I₁.right,所以 I₁.right 也在该区间内),且点数不变,仍是最优解。
若 x > I₁.right,则 I₁ 不可能被覆盖(因为 I₁.right 是最小的,x 更大,无法覆盖 I₁),矛盾。
因此,总可以构造一个最优解,其第一个点选为 I₁.right。贪心选择成立。

时间复杂度分析
排序:使用快速排序(sort),时间复杂度为 O(n log n)。
遍历:一次线性扫描,O(n)。
总时间复杂度:O(n log n)。

我的理解:
贪心算法是一种在每一步选择中都采取当前状态下最优(局部最优)的选择,从而希望导致全局最优解的算法策略。

http://www.rkmt.cn/news/74901.html

相关文章:

  • 2026年网络安全展望:AI加速、攻击面扩张与专业化红队的未来
  • 接入Impala、Hive 的报表、BI、数据中台的国内厂商评价及接口框架
  • 完整教程:用Python识别图片中的文字(Tesseract OCR)
  • 个人健康体系|健康管理|基于java+Android+微信小工具的个人健康系统设计与实现(源码+数据库+文档)
  • Yolov5 使用手册
  • AI搜索浪潮下的geo优化先锋:2025年值得关注的服务商清单
  • 2025.12.6-原来要使用md格式
  • 3D模型在线转换
  • Batch Size
  • 2025.12.6-md测试图片
  • 2025.12.6-测试图片
  • APP开发实用的技术选型:原生 vs 跨端 (Flutter/React Native) 对比与适配场景
  • Sampler AI 材质流:一键“喂”图生成 PBR - 教程
  • vue 实用指令
  • 【算法题解】MX-S5-T1:王国边缘与倍增跳跃——深入理解内向基环树处理
  • 关于排列问题的做题及思考
  • VMware Workstation Pro下载并安装Windows
  • 第4章串、数组和广义表
  • Spring Cloud Gateway 源码分析一
  • Daytona:90ms 启动的 AI 代码沙箱基础设施
  • 东莞水乡也新建了一个人工智能应用创新中心?怎么回事 - ---Wg--
  • 限制
  • 企业智能体化:从系统堆叠到智能体矩阵的组织进化
  • Kafka工作流程及文件存储机制 - 详解
  • 实用指南:微软加速在亚洲扩展云基础设施,推动区域数字化跨越式发展
  • 悬架设计计算工具:开启悬架设计学习与实践的钥匙
  • Solon AI 开发学习17 - generate - 使用复杂提示语
  • 别再发愁!对比多款后锁定这6个型号,挑选高中学习机,不花冤枉钱
  • 使用typora来写md文件时配置文件存放图片的路径
  • 滥用ESC10:通过注册表配置不当实现权限提升的ADCS攻击分析