区间问题——905. 区间选点

目录

区间问题

定义

运用情况

注意事项

解题思路

AcWing 905. 区间选点

题目描述

运行代码

代码思路

改进思路

其它代码

代码思路

区间问题

定义

区间通常是指一个连续的范围,可以用数轴上的一段来表示。

运用情况

  • 在数学中广泛用于表示变量的取值范围,如函数的定义域、值域等。
  • 在统计学中用于描述数据的分布区间。
  • 在实际生活中,如时间区间、温度区间等。

注意事项

  • 明确区间的端点是否包含在内(开区间或闭区间)。
  • 对于多个区间的组合,要仔细分析它们之间的关系。
  • 在计算和推理时,要确保区间的定义和条件始终一致。

解题思路

  • 首先确定区间的类型(开区间、闭区间等)。
  • 根据题目条件,列出相关方程或不等式来确定区间的范围。
  • 对于复杂的区间问题,可以通过图形来辅助理解和分析。
  • 检查答案是否满足区间的定义和题目要求。

AcWing 905. 区间选点

题目描述

905. 区间选点 - AcWing题库

运行代码

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {int n;cin >> n;vector<pair<int, int>> intervals(n);for (int i = 0; i < n; i++) {cin >> intervals[i].first >> intervals[i].second;}sort(intervals.begin(), intervals.end(), [](const pair<int, int>& a, const pair<int, int>& b) {return a.second < b.second;});int ans = 0, lastPoint = -1000000001;for (const auto& interval : intervals) {if (interval.first > lastPoint) {ans++;lastPoint = interval.second;}}cout << ans << endl;
return 0;
}

代码思路

  • 首先,读取区间的数量 n
  • 创建一个 vector<pair<int, int>> 来存储所有的区间。
  • 通过循环读取每个区间的左右端点并存储到 intervals 中。
  • 然后对区间按照右端点进行排序,这样可以保证先处理右边界较小的区间。
  • 初始化结果 ans 为 0,以及一个表示上一个选择的点的位置 lastPoint 为一个极小值。
  • 遍历排序后的区间:如果当前区间的左端点大于上一个选择的点的位置,说明需要在这个区间内选择一个新的点,将结果加 1,并更新 lastPoint 为当前区间的右端点。这样就可以保证每个区间都至少有一个点被选中,且是尽可能少的点。最后输出结果。
  • 这种贪心策略的核心在于优先处理右边界较小的区间,通过不断更新选择点的位置来满足所有区间的覆盖要求。

改进思路

  1. 添加输入有效性检查:可以在读取 n 以及区间端点值时,添加一些检查来确保输入数据的合法性。
  2. 考虑使用更高效的数据结构:如果对性能要求较高,可以研究是否有更适合的数据结构来存储和处理区间信息。
  3. 添加必要的注释:进一步增加代码的注释,以提高代码的可理解性。
  4. 异常处理:考虑添加一些针对可能出现的异常情况(如输入错误、排序失败等)的处理机制。
  5. 代码重构:对一些逻辑部分进行重构,使其结构更加清晰,逻辑更加简洁。
  6. 性能优化:分析代码中可能存在的性能瓶颈,进行针对性优化,比如尝试不同的排序算法等。

其它代码

#include <iostream>
#include <algorithm>
using namespace std;
const int N = 100010;
struct R
{int l, r;bool operator < (const R &W)const{return r < W.r;}
}r[N];
int main()
{int n; cin >> n;for(int i = 0; i < n ; i++){int a, b; cin >> a >> b;r[i] = {a, b};}sort(r, r + n);int ans = 0, right = -2e9;for(int i = 0; i < n; i++){if(r[i].l > right){ans ++;right = r[i].r;}}cout << ans << endl;return 0;
}

代码思路

  • 定义了一个结构体 R 来表示区间,包含左端点 l 和右端点 r,并定义了结构体之间的比较运算符,按照右端点从小到大排序。
  • 在 main 函数中,首先输入区间的数量 n,然后依次输入每个区间的左右端点,并将其存储在 r 数组中。
  • 通过 sort 函数对区间数组按照右端点排序。
  • 然后通过遍历数组,使用一个变量 right 来记录当前已经覆盖到的最右端位置。如果当前区间的左端点大于 right,说明这是一个新的不重叠区间,就将结果加 1,并更新 right 为当前区间的右端点。最后输出不重叠区间的数量。

总的来说,这段代码的目的是通过对区间进行排序和遍历,计算出不重叠区间的最大数量。例如,假设有一系列区间 [1, 3][2, 4][4, 6],经过处理后可以得出有 2 个不重叠区间([1, 3] 和 [4, 6])。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/34077.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

未系安全带智能监测摄像机

未系安全带智能监测摄像机在现代安全管理中发挥着至关重要的作用。这些先进设备不仅仅是简单的监视工具&#xff0c;更是通过整合高级技术来提升工作效率和安全性&#xff0c;特别是在需要高度警惕的作业环境中尤为突出。 首先&#xff0c;这些智能监测摄像机配备了精准的视觉识…

SOLIDWORKS专业版2024价格

SOLIDWORKS Professional 专业版&#xff0c;带有 ECAD/MCAD 协作、自动成本估算、协作功能、设计和工程图检查、复杂的零部件库以及高级真实感渲染。 1. ECAD/MCAD协作&#xff1a;SOLIDWORKS专业版提供了强大的ECAD/MCAD协作功能&#xff0c;使得设计团队可以更高效地进行跨…

HTML(23)——垂直对齐方式

垂直对齐方式 属性名&#xff1a;vertical-align 属性值效果baseline基线对齐(默认)top顶部对齐middle居中对齐bottom底部对齐 默认情况下浏览器对行内块&#xff0c;行内标签都按文字处理&#xff0c;默认基线对齐 导致图片看起来会偏上&#xff0c;文字偏下。 示例&#…

谷歌浏览器截图

一 右击&#xff0c;然后点击检查&#xff1b; 二 然后ctrlshiftp,运行命令&#xff1b; 三 3.1搜索截图&#xff1a; 如果你设置为中文&#xff0c;搜索截图&#xff0c;选择你想要的截图类型&#xff1b; 如果你是在英文情况下&#xff1a; 输入capture full size 来过滤…

【Redis】如何保证缓存和数据库的一致性

目录 背景问题思路 三个经典的缓存模式Cache-Aside读缓存写缓存为什么是删除旧缓存而不是更新旧缓存&#xff1f;为什么不先删除旧的缓存&#xff0c;然后再更新数据库&#xff1f; 延迟双删如何确保原子性 Read-Through/Write-ThroughRead-ThroughWrite-Through Write Behind …

【九】【QT开发应用】WebRTC的sigslot源码和使用WebRTC的sigslot使用编写信号槽

WebRTC&#xff08;Web Real-Time Communication&#xff09; 是一个开源项目&#xff0c;提供实时通信能力&#xff0c;广泛应用于视频、音频和数据传输。在WebRTC的实现中&#xff0c;sigslot库用于信号和槽机制&#xff0c;以实现事件驱动的编程模型。 WebRTC的sigslot部分…

泰迪智能科技大数据人工智能实训室优势特色介绍

泰迪智能科技大数据人工智能实训室是面向人工智能技术应用、大数据技术、软件技术专业&#xff0c;是一个教、学、培训认证统一的实训平台&#xff0c;集教学、实训、培训认证功能于一体&#xff0c;围绕人工智能主题&#xff0c;同时兼顾当前IT流行技术的发展趋势&#xff0c;…

Linux tcpdump抓包必备知识

author: 放牛娃学编程 moto: 分享与热爱&#xff0c;不是大爱我不说 放牛娃每日一语: 除了你自己&#xff0c;没有人可以说你不行 别急着划开&#xff0c;这篇笔记一定能够给你带来收获 因为这里你能学到AI永远也给不了你的知识 Linux tcpdump抓包必备知识 文章目录 Linux tcp…

Softing “Ethernet-APL现场交换机”亮相ACHEMA 2024

Softing工业在ACHEMA 2024上展示了新的“aplSwitch Field”。作为一个先进的16端口以太网高级物理层&#xff08;Ethernet-APL&#xff09;现场交换机&#xff0c;它配有可选的PROFIBUS Process Automation&#xff08;PA&#xff09;代理&#xff0c;适用于Zone 2环境&#xf…

JavaWeb系列二十: jQuery的DOM操作 下

jQuery的DOM操作 CSS-DOM操作多选框案例页面加载完毕触发方法作业布置jQuery获取选中复选框的值jQuery控制checkbox被选中jQuery控制(全选/全不选/反选)jQuery动态添加删除用户 CSS-DOM操作 获取和设置元素的样式属性: css()获取和设置元素透明度: opacity属性获取和设置元素高…

数字化营销与传统营销的完美协奏曲!

在这个数字化的时代&#xff0c;营销的世界正在发生着巨大的变革&#xff01;数字化营销如火箭般崛起&#xff0c;但传统营销也并未过时。那么&#xff0c;如何让它们携手共进&#xff0c;创造出无与伦比的营销效果呢&#xff1f;今天&#xff0c;就让我们讲述一下蚓链数字化营…

拼多多面试总结

文章目录 一面自我介绍提问算法反问结果 二面提问算法反问结果 主管面主管面试准备算法题其他个人提问准备 提问数据库普通索引和覆盖索引的区别索引是什么&#xff1f;索引怎么加快数据库查询的&#xff1f;索引具体怎么实现的&#xff1f;以B树为例&#xff0c;节点放了什么&…

自动预约申购 i茅台工具完善

自动预约申购茅台工具 概述新的改变界面预览 概述 今天刷到一个windows自动刷茅台的工具&#xff0c;是用wpf实现的&#xff0c;看到作者最后是2023年更新的&#xff0c;评论中有好多人提出一些需求&#xff0c;刚才在学习wpf&#xff0c;就试着完善了一下。 工具下载&#x…

【C++】文件处理(IO流)

文章目录 C IO流1. C语言IO2. CIO2.1 C标准IO流2.2 C文件IO流2.3 C IO 文件常用函数总结表2.4 C stringstream C IO流 回顾一下&#xff0c;C语言中IO输入输出的 1. C语言IO C语言中常用的输入输出函数有如下几种&#xff1a;前者是格式化标准输入输出&#xff0c;后者是格式化…

windows和linux下清空Redis

前言 在本文中&#xff0c;我们将详尽阐述在Windows与Linux操作系统中有效清除Redis缓存的实践方法&#xff0c;旨在为您提供清晰、高效的指导流程&#xff0c;确保数据管理的灵活性与效率。 windows下推荐两款可视化工具 Another Redis Desktop Manager 这是我用的最多也是最…

数据库原理与安全复习笔记(未完待续)

1 概念 产生与发展&#xff1a;人工管理阶段 → \to → 文件系统阶段 → \to → 数据库系统阶段。 数据库系统特点&#xff1a;数据的管理者&#xff08;DBMS&#xff09;&#xff1b;数据结构化&#xff1b;数据共享性高&#xff0c;冗余度低&#xff0c;易于扩充&#xff…

ROS话题通信流程自定义数据格式

ROS话题通信流程自定义数据格式 需求流程实现步骤定义msg文件编辑配置文件编译 在 ROS 通信协议中&#xff0c;数据载体是一个较为重要组成部分&#xff0c;ROS 中通过 std_msgs 封装了一些原生的数据类型,比如:String、Int32、Int64、Char、Bool、Empty… 但是&#xff0c;这些…

从移动切换到电信IP:详细介绍两种方法

在当前的互联网环境中&#xff0c;用户可能会因为各种原因需要切换网络服务提供商&#xff0c;比如从移动切换到电信。这种切换不仅涉及到网络服务的变更&#xff0c;还可能意味着IP地址的改变。那么&#xff0c;移动的怎么切换成电信的IP&#xff1f;下面一起来了解一下吧。 方…

测试内容初步认知

测试流程 了解需求--需求评审--编写测试用例--测试用例评审(产品、开发、测试)--提测测试--bug管理(devops)--集成--集成回归--发布灰度包测试(灰度周期一周)----编写测试报告--发布上线 测试岗位划分 功能测试 负责编写测试用例&#xff0c;执行手动测试&#xff0c;记录并…

麦肯锡:量子传感究竟在何处可以发光发热

量子传感技术已经提供价值&#xff0c;潜在的应用案例可以塑造多个行业。有四种核心技术具有应用前景&#xff1a;固态自旋、中性原子、超导电路和离子阱&#xff0c;它们具有在广泛的物理属性上的传感能力&#xff0c;包括磁场、电场、旋转、温度、重力、时间和压力。选择哪种…