ACM算法训练【区间合并】

简介: 思路:• 按区间左端点排序,每次维护一个区间• 新增区间的三种关系:


1.题目概述


d4e1b095b85846a7a3bfb5e091e0b55a.png


输入样例:


5
1 2
2 4
5 6
7 8
7 9


输出样例:


3


2.代码实现


思路:

  • 按区间左端点排序,每次维护一个区间
  • 新增区间的三种关系:


a5b9f00a231744e797f4d2eef62da16c.png


#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int> PII;
vector<PII> segs;
void push(vector<PII> &segs)  //区间合并
{
    vector<PII> res;
    sort(segs.begin(),segs.end());
    int st=-2e9,ed=-2e9;
    for(auto item : segs)
    {
        if(ed<item.first)
        {
            if(ed!=-2e9) res.push_back({st,ed});
            st=item.first;
            ed=item.second;
        }
        else ed=max(ed,item.second);
    }
    if(st!=-2e9) res.push_back({st,ed});  //加入最后一个区间
    segs = res;
}
int main()
{
    int n;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        int l,r;
        scanf("%d%d",&l,&r);
        segs.push_back({l,r});
    }
    push(segs);
    cout<<segs.size();
    return 0;
}
目录
相关文章
|
3月前
|
算法 测试技术 C#
C++二分查找算法:包含每个查询的最小区间
C++二分查找算法:包含每个查询的最小区间
|
2月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1 算法训练 区间k大数查询
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1 算法训练 区间k大数查询
17 0
|
5月前
|
存储 算法 C++
C++基础算法离散化及区间合并篇
C++基础算法离散化及区间合并篇
|
3月前
|
算法 测试技术 C#
【map】【滑动窗口】C++算法:最小区间
【map】【滑动窗口】C++算法:最小区间
|
3月前
|
存储 算法 索引
算法题解-汇总区间
算法题解-汇总区间
|
4月前
|
算法 Java
算法编程(十八):汇总区间
算法编程(十八):汇总区间
32 0
|
4月前
|
算法 程序员
【算法训练-链表 一】【反转链表】反转链表、区间反转链表、K个一组反转链表
【算法训练-链表 一】【反转链表】反转链表、区间反转链表、K个一组反转链表
29 0
|
4月前
|
算法 测试技术 C#
C++ 算法:区间和的个数
C++ 算法:区间和的个数
|
4月前
|
算法 测试技术 C#
C++二分查找算法的应用:将数据流变为多个不相交区间
C++二分查找算法的应用:将数据流变为多个不相交区间
|
5月前
|
人工智能 算法
代码随想录算法训练营第三十五天 | LeetCode 435. 无重叠区间、763. 划分字母区间、56. 合并区间
代码随想录算法训练营第三十五天 | LeetCode 435. 无重叠区间、763. 划分字母区间、56. 合并区间
40 0