区间合并
题目链接:https://www.acwing.com/problem/content 题意 :给定 n 个区间 [li,ri],要求合并所有有交集的区间。 注意如果在端点处相交,也算有交集。 输出合并完成后的区间个数。 例如:[1,3]和[2,6]可以合并为一个区间[1,6]。 数据范围 1≤n≤100000, −109≤li≤ri≤109 输入样例: 5 1 2 2 4 5 6 7 8 7 9 输出样例: 3 思维 :其实还是有点像贪心的思维啊。我们把所有的区间按照左端点由小到大排序,有重叠的就不断更新右端点,直到形成一个独立区间后存入答案res中,再把左端点更新为下一个独立起点……如此下去res的size就是最总答案啦!! 代码实现: # include <bits/stdc++.h> using namespace std ; typedef long long ll ; typedef pair < int , int > PII ; const int INF = 0x3f3f3f3f ; const int MAXN = 1e5 + 5 ; int n ; void merge ( vector < PII > & s ) { vector < PII > res ; sort ( s . begin ( ) , s . end ( ) ) ; int st = -