AcWing 803. 区间合并
网址 https://www.acwing.com/solution/AcWing/content/1590/
题目描述
给定n个区间[l, r]。
合并所有有交集的区间。
输出合并完成后的区间个数。
例如:[1,3]和[2,6]可以合并为一个区间[1,6]。
输入格式
第一行包含整数n。
接下来n行,每行包含两个整数 l 和 r。
输出格式
共一行,包含一个整数,表示合并区间完成后的区间个数。
样例
输入样例:
5
1 2
2 4
5 6
7 8
7 9
输出样例:
3
算法1
(暴力模拟) O(n2)O(n2)
模版题么 简单暴力模拟
抛开输入输出不说
判断 各个区间是否重合
主要是四种情况
1 A区间的起点在B区间的起点终点之间 Bstart Astart Bend Aend
2 A区间起点终点在B区间的起点终点之间 Bstart Astart Aend Bend
反之亦然
3 B区间的起点在A区间的起点终点之间 Astart Bstart Aend Bend
4 B区间起点终点在A区间的起点终点之间 Astart Bstart Bend Aend
但是代码可以归为两种情况判断
int s1 = vp[i].first;
int e1 = vp[i].second;
int s2 = vp[j].first;
int e2 = vp[j].second;
if( (s1>= s2 && s1<= e2) || (s2 >=s1 && s2 <= e1) ){
}
然后进行合并
两者区间合并后就是 起点是两者起点的最小值 终点是两者终点的最大值
代码
merges = min(s1,s2);
mergee = max(e1,e2);
vp[j].first = merges;
vp[j].second = mergee;

1 #include <iostream> 2 #include <vector> 3 #include <algorithm> 4 5 using namespace std; 6 7 int T; 8 const int N= 100100; 9 vector<pair<int,int>> vp(N,pair<int,int>(-1,-1)); 10 11 int Merge(int i,int j) 12 { 13 int s1 = vp[i].first; 14 int e1 = vp[i].second; 15 16 int s2 = vp[j].first; 17 int e2 = vp[j].second; 18 19 int merges = 0;int mergee= 0; 20 21 if( (s1>= s2 && s1<= e2) || (s2 >=s1 && s2 <= e1) ){ 22 merges = min(s1,s2); 23 mergee = max(e1,e2); 24 25 vp[j].first = merges; 26 vp[j].second = mergee; 27 return 1; 28 } 29 30 return 0; 31 } 32 33 34 int main() 35 { 36 cin >> T; 37 38 for(int i =1 ;i <= T ;i ++){ 39 cin >> vp[i].first; cin >> vp[i].second; 40 } 41 int mergeCount =0; 42 for(int i =1 ; i <= T;i++){ 43 for(int j = i+1;j<= T;j++){ 44 //比较 i j 45 int res = Merge(i,j); 46 if(res){ 47 mergeCount++; 48 break; 49 } 50 } 51 } 52 53 cout << T - mergeCount << endl; 54 55 return 0; 56 } 57 58 作者:defddr 59 链接:https://www.acwing.com/solution/AcWing/content/1590/ 60 来源:AcWing 61 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
欢迎转帖 请保持文本完整并注明出处
技术博客 http://www.cnblogs.com/itdef/
B站算法视频题解
https://space.bilibili.com/18508846
qq 151435887
gitee https://gitee.com/def/
欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
如果觉得不错,欢迎点赞,你的鼓励就是我的动力


【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
2017-05-18 游戏脚本编程 文本token解析