#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
typedef pair<int,int> pii;//定义 pair<int,int> 名字为PII
vector<pii> all,res;
int main(){int st=2e-9,ed=-2e9; //ed代表区间结尾,st代表区间开头.刚开始两个为最小值int n,l,r;cin >>n;for(int i=0;i<n;i++){//区间输入cin >>l>>r;all.push_back({l,r});//将每个区间放入,方便之后遍历}sort(all.begin(),all.end()); //区间左端点排序。优先按左端点排序,再按右端点。//不可能有:区间2在区间1的左边(因为是排过序的)for(auto num:all){if(ed<num.first){ //第一种情况:两个区间无法合并。   区间1的末点<区间2的首点if(ed!=-2e9){res.push_back({st,ed});//将区间放入数组}st=num.first;//更新首尾,维护区间ed=num.second;}else if(ed<num.second){//第二种情况:两个区间可以合并。 区间1的末点<区间2的末点ed=num.second;}}if(st!=2e-1&&ed!=2e-9){res.push_back({st,ed});//循环结束时的st,ed变量,此时的st,ed变量不需要继续维护,只需要放进res数组即可。因为这是最后的一个序列,所以不可能继续进行合并。}cout <<res.size();//求出区间数量return 0;
}
// 将所有存在交集的区间合并
void merge(vector<PII> &segs)
{vector<PII> res;sort(segs.begin(), segs.end());int st = -2e9, ed = -2e9;for (auto seg : segs)if (ed < seg.first){if (st != -2e9) res.push_back({st, ed});st = seg.first, ed = seg.second;}else ed = max(ed, seg.second);if (st != -2e9) res.push_back({st, ed});segs = res;
}

Awcing算法---区间合并相关推荐

  1. 基础算法(三):双指针/位运算/离散化/区间合并

    目录 1.双指针算法 引例 最长连续不重复子序列 2.位运算 n的二进制表示中第k位是几 lowbit(x)操作:返回x二进制表示中的最后一位1 3.离散化 4.区间合并 1.双指针算法 引例 输入一 ...

  2. AcWing 算法基础课第三节基础算法3 双指针、位运算、离散化、区间合并

    1.该系列为ACWing中算法基础课,已购买正版,课程作者为yxc 2.y总培训真的是业界良心,大家有时间可以报一下 3.为啥写在这儿,问就是oneNote的内存不够了QAQ ACwing C++ 算 ...

  3. 一、基础算法9:区间合并 模板题+算法模板(区间合并)

    文章目录 算法模板 离散化题目模板 模板题 区间和 原题链接 题目 题解 思路 算法模板 离散化题目模板 // 将所有存在交集的区间合并 void merge(vector<PII> &a ...

  4. 数组的合并和升序排列_区间调度问题之区间合并

    读完本文,你可以去力扣拿下如下题目: 56.合并区间 ----------- 上篇文章用贪心算法解决了区间调度问题:给你很多区间,让你求其中的最大不重叠子集. 其实对于区间相关的问题,还有很多其他类型 ...

  5. LeetCode 57. 插入区间(合并区间+排序)(区间重叠问题汇总)

    题目描述 给出一个无重叠的 ,按照区间起始端点排序的区间列表. 在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间). 示例 1: 输入: interval ...

  6. HDU 4553 约会安排 (区间合并)【线段树】

    <题目链接> 寒假来了,又到了小明和女神们约会的季节.  小明虽为屌丝级码农,但非常活跃,女神们常常在小明网上的大段发言后热情回复"呵呵",所以,小明的最爱就是和女神们 ...

  7. 树链剖分——线段树区间合并bzoj染色

    线段树区间合并就挺麻烦了,再套个树链就更加鬼畜,不过除了代码量大就没什么其他的了.. 一些细节:线段树每个结点用结构体保存,pushup等合并函数改成返回一个结构体,这样好写一些 struct Seg ...

  8. SPOJ GSS3-Can you answer these queries III-分治+线段树区间合并

    Can you answer these queries III SPOJ - GSS3 这道题和洛谷的小白逛公园一样的题目. 传送门: 洛谷 P4513 小白逛公园-区间最大子段和-分治+线段树区间 ...

  9. P3797 妖梦斩木棒 线段树区间合并

    题意: 1 x C 将第x个小段的木棒替换成C型,C只会是'X','(',')'中的一种 2 l r 询问妖梦从第l段到第r段之间(含l,r),有多少个完整的木棒 完整的木棒左右两端必须分别为'('和 ...

最新文章

  1. 干得累死,并不见得老板就待见你?——来自多位专家的见解
  2. python调用bat有时可以、有时不行_python编程实现对远程执行bat文件时遇到的错误...
  3. 一个项目经理的一些个人体会
  4. win7笔记本为手机共享wifi
  5. 不用AJAX框架实现AJAX效果
  6. k8s通过yaml创建pod_Kubernetes根据yaml创建pod的时候8080访问被拒绝报错
  7. html 纵向选项卡,竖直选项卡式面板的实现_html/css_WEB-ITnose
  8. Matlab程序仿真与调试入门
  9. 紫光展锐【软件工程师】面经
  10. 2019长江课堂作业答案_“绝户网”捕捞长江鳗鱼苗 检察机关:“全链条”担责...
  11. 以太网峰会:网络管理员已成濒危职业
  12. 观察者模式java类图_初探Java设计模式------观察者模式
  13. SGU 286 Ancient decoration(Euler路径+二分匹配)
  14. bash 脚本_实用的 bash 自定义脚本,快速提效工作流程
  15. matlab2c使用c++实现matlab函数系列教程-load函数
  16. vue循环出来列表里面的列表点击click事件只对当前列表有效;
  17. Ableton Live 11 Suite for Mac(专业音乐创作软件)
  18. JavaScript(3):JS和Html
  19. 24AA512/24LC512/24FC512系列器件中文翻译
  20. 使用echarts做气泡图

热门文章

  1. 新兴解决方案增强了电动汽车电源(功耗)管理
  2. 2021年大数据常用语言Scala(七):基础语法学习 条件表达式
  3. 第三个Python程序:Python函数
  4. Error:org.gradle.api.internal.tasks.DefaultTaskInputs$TaskInputUnionFileCollection cannot be cast to
  5. CF803C Maximal GCD
  6. 【[HAOI2011]Problem c】
  7. Streamr助你掌控自己的数据(2)——三种整合数据至Streamr的典型场景
  8. 2022-2028年中国免疫诊断行业市场前瞻与投资战略规划分析报告
  9. php substr cnblog,php中substr用法示例
  10. jQuery-1.9.1源码分析系列(四) 缓存系统