区间问题——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;文字偏下。 示例&#…

帝国cms定时审核并更新的方法

比如你网站采集了成千上万篇文章,不可能一下子全部放出来的,所以为了模拟人工发布,那么就需要定时审核发布文章内容,本文内容核心解决了更加个性化的逼真模拟人工更新网站内容。 第一:首先要满足你的表中有未审核的数据 第二:到http://bbs.phome.net/showthread-31-19616…

谷歌浏览器截图

一 右击&#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部分…

电子盖章怎么做_电子盖章软件

使用e-章宝&#xff08;易友EU3000智能盖章软件&#xff09;进行电子盖章的步骤如下&#xff1a; 一、准备阶段 软件获取&#xff1a; 访问e-章宝&#xff08;易友EU3000智能盖章软件&#xff09;的官方网站或相关渠道&#xff0c;下载并安装软件。账户注册与登录&#xff1a…

HTML常用标签简明汇总

常见标签 标签写法介绍<! – – >注释&#xff0c;内容不会在页面显示< h1 >< /h1 >标题&#xff08;只有1到6的标题等级&#xff09;< p >< /p>段落 独占一行< a href“网址”>< /a>超链接 用href 后面接网址< br >换行<…

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

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

注册机CAD2020激活遇到激活错误 0015.111的解决办法

这里写自定义目录标题 注册机下载位置破解要点 注册机下载位置 https://download.csdn.net/download/Stephen___Qin/89476691 破解要点 1.要以管理员身份运行CAD2020软件和注册机 2.要先点击注册的patch&#xff08;中文版本为“补丁”&#xff09;按键

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…

期待一年后人工智能的飞跃:从高中生到博士的智力水平

关于ChatGPT本身&#xff0c;可以分享一些普遍讨论的优缺点及可能的发展方向&#xff1a; ChatGPT的优点&#xff1a; 对话理解能力强大&#xff1a;能够理解复杂和多轮对话上下文&#xff0c;提供连贯且相关的回复。生成内容丰富多样&#xff1a;能根据要求生成故事、诗歌、…

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

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

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

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

【Rust】——所有可能会用到模式的位置

&#x1f4bb;博主现有专栏&#xff1a; C51单片机&#xff08;STC89C516&#xff09;&#xff0c;c语言&#xff0c;c&#xff0c;离散数学&#xff0c;算法设计与分析&#xff0c;数据结构&#xff0c;Python&#xff0c;Java基础&#xff0c;MySQL&#xff0c;linux&#xf…

【XML模版文件参数初始化】

XML 模版文件&#xff0c;内部存在需要自定义的数据&#xff0c;使用 Python 进行初始化。 1、存在一个 XML 模版文件&#xff0c;定义如下 <!-- 文件名称 index.xml --> <root><HEAD><VER>1.0</VER><SRC>10000000000000</SRC><…

mediasoup源码分析(四)channel返回信令及notify通知

channel返回信令及notify通知 前言正常成功返回Accept异常失败返回Rejectmediasoup主动推送&#xff0c;Emitmediasoup推送数据到信令服务的具体实现:tips 前言 在mediasoup源码分析(三)channel创建及信令交互一文中介绍了mediasoup中channel的创建&#xff0c;接下来在本文中…

拼多多面试总结

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