区间合并就是排序后查看集合是否有交集
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
typedef pair<int,int>PII;
vector<PII> nums,res;
int main()
{
int st=-2e9,ed=-2e9;
int n;
cin>>n;
//读入区间
while(n--)
{
int l,r;
cin>>l>>r;
nums.push_back({l,r});
}
//将区间从零到后排序
sort(nums.begin(),nums.end());
for(auto &num:nums)
{
if(ed<num.first)//区间右端<新区间左端
{
if(ed!=-2e9)res.push_back({st,ed});
st=num.first,ed=num.second;
}
else ed=max(ed,num.second);//更新区间右端为新区间右端
}
//补上一个区间
if(ed!=-2e9)res.push_back({st,ed});
cout<<res.size();
return 0;
}