区间合并
	概念:在有序升序序列中,如果某一区间合另一区间存在交集,则两个区间可以合并为一个区间
	思考情况:

1.绿色区间在蓝色区间内部 2.橙色区间与蓝色区间有交集 3.粉色区间与蓝色区间无关联
   | 
 
最终得到新的合并区间[ st , ed ] 
st全称start,ed全称end
例题
题目描述 给定 n 个区间 [li , ri],要求合并所有有交集的区间。 注意如果在端点处相交,也算有交集。 输出合并完成后的区间个数。 例如:[1,3] 和 [2,6] 可以合并为一个区间 [1,6]。
  输入格式 第一行包含整数 n。 接下来 n 行,每行包含两个整数 l 和 r。
  输出格式 共一行,包含一个整数,表示合并区间完成后的区间个数。
  数据范围 1 ≤ n ≤ 100000 , −1e9 ≤ li ≤ ri ≤ 1e9
   | 
 
输入样例
输出样例
题解
#define _CRT_SECURE_NO_WARNINGS 1
  #include <iostream> #include <vector> #include <algorithm>
  using namespace std;
  typedef pair<int, int> PII;
  const int N = 100010;
  int n; vector<PII> segs;
  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 (ed != -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; } int main() { 	cin >> n; 	for (int i = 0;i < n;++i) 	{ 		int l, r; 		cin >> l >> r; 		segs.push_back({ l,r }); 	}
  	merge(segs);
  	cout << segs.size() << endl; 	return 0; }
   |