热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

AcWing题解——803.区间合并

题目题目链接AcWingOJ:https:www.acwing.comproblemcontent805。我的OJ:http:47.110.135
题目

题目链接

AcWing OJ:https://www.acwing.com/problem/content/805/。

我的OJ:http://47.110.135.197/problem.php?id=5240。

题目描述

给定 n 个区间 [li, ri],要求合并所有有交集的区间。 注意如果在端点处相交,也算有交集。
输出合并完成后的区间个数。
例如:[1, 3] 和 [2, 6] 可以合并为一个区间 [1, 6]。

输入

第一行包含整数 n。
接下来 n 行,每行包含两个整数 l 和 r。

输出

共一行,包含一个整数,表示合并区间完成后的区间个数。

样例输入

5
1 2
2 4
5 6
7 8
7 9

样例输出

3

数据范围

1 ≤ n ≤ 100000,
−10^9 ≤ li ≤ ri ≤10^9。

分析

本题基本和一本通的区间合并一样。只是输出改成了合并后有几个区间。

数学知识

区间一共有两个坐标,即起点坐标和终点坐标。其中起点坐标记为 ST,终点坐标记为 ED。

假设我们有任意两个区间 A 和 B,则这两个区间可以有三种可能关系。

相交

区间 A 和区间 B 有交集,如图所示。

则有这样的数学关系&#xff1a;ST_{a} <ST_{b}\leqslant ED_{a}<ED_{b}

则有这样的数学关系&#xff1a;ED_{a}<ST_{b}

则有这样的数学关系&#xff1a;ST_{a} \leqslant ST_{b}<ED_{a}\leqslant ED_{b}

如上图所示&#xff0c;我们可以很清晰的看到&#xff0c;可以合并成 3 个区间&#xff0c;如下图所示。

也就是 [1, 4]、[5, 6] 和 [7, 9] 这三个区间。

区间合并的过程图示可以参考我前面的一个题解&#xff0c;https://blog.csdn.net/justidle/article/details/104553695。

数据范围分析

从题目中可以知道&#xff0c;n 的最大值为 100000&#xff0c;坐标范围是 [-10^9, 10^9]&#xff0c;所以使用 int 表示足够。

对区间的描述&#xff0c;可以使用 STL 的 pair&#xff0c;也可以使用自定义的 struct。

算法思路

1、读入所有数据并保存。

2、将所有区间进行排序。

3、遍历两个相邻区间&#xff0c;看能否合并。如果可以合并&#xff0c;则合并区间&#xff0c;继续遍历直到最后一个区间。如果不可以合并&#xff0c;区间数增加一&#xff0c;继续合并以后的区间。

4、输出最终的区间数。

AC 参考代码

//https://www.acwing.com/problem/content/805/
//区间合并
#include
using namespace std;//区间定义
struct NODE {int x;int y;
};const int MAXN &#61; 1e5&#43;4;
NODE a[MAXN] &#61; {};bool mycmp(const NODE &a, const NODE &b) {if (a.x!&#61;b.x) {return a.x}int main() {int n;cin >> n;int i;for (i&#61;0; i> a[i].x >> a[i].y;}//排序sort(a, a&#43;n, mycmp);//遍历NODE curr &#61; a[0];int ans &#61; 1;for (i&#61;1; i curr.y) {//没有交集ans&#43;&#43;;curr &#61; a[i];} else {//包含或者相交关系curr.y &#61; max(curr.y, a[i].y);}}cout <}


推荐阅读
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了解决二叉树层序创建问题的方法。通过使用队列结构体和二叉树结构体,实现了入队和出队操作,并提供了判断队列是否为空的函数。详细介绍了解决该问题的步骤和流程。 ... [详细]
  • C++中的三角函数计算及其应用
    本文介绍了C++中的三角函数的计算方法和应用,包括计算余弦、正弦、正切值以及反三角函数求对应的弧度制角度的示例代码。代码中使用了C++的数学库和命名空间,通过赋值和输出语句实现了三角函数的计算和结果显示。通过学习本文,读者可以了解到C++中三角函数的基本用法和应用场景。 ... [详细]
  • 3.223.28周学习总结中的贪心作业收获及困惑
    本文是对3.223.28周学习总结中的贪心作业进行总结,作者在解题过程中参考了他人的代码,但前提是要先理解题目并有解题思路。作者分享了自己在贪心作业中的收获,同时提到了一道让他困惑的题目,即input details部分引发的疑惑。 ... [详细]
  • 开发笔记:实验7的文件读写操作
    本文介绍了使用C++的ofstream和ifstream类进行文件读写操作的方法,包括创建文件、写入文件和读取文件的过程。同时还介绍了如何判断文件是否成功打开和关闭文件的方法。通过本文的学习,读者可以了解如何在C++中进行文件读写操作。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 李逍遥寻找仙药的迷阵之旅
    本文讲述了少年李逍遥为了救治婶婶的病情,前往仙灵岛寻找仙药的故事。他需要穿越一个由M×N个方格组成的迷阵,有些方格内有怪物,有些方格是安全的。李逍遥需要避开有怪物的方格,并经过最少的方格,找到仙药。在寻找的过程中,他还会遇到神秘人物。本文提供了一个迷阵样例及李逍遥找到仙药的路线。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
author-avatar
江自流
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有