acwing803区间合并问题,想不明白为什么遍历完整个seg之后还要特判一下
if(st!=-2e9) res.push_back({st,end})
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
typedef pair<int,int>PII;
vector<PII>seg;
void merge(vector<PII>&seg){
vector<PII> res;
int st=-2e9,end=-2e9;
for(auto item:seg){
if(end<item.first){
if(st!=-2e9) res.push_back({st,end});
st=item.first;
end=item.second;
}
else end=max(end,item.second);
}
//处理最后一个段 ,这里不明白
if(st!=-2e9) res.push_back({st,end});
seg=res;
}
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++){
int l,r;
cin>>l>>r;
seg.push_back({l,r});
}
merge(seg);
cout<<seg.size()<<endl;
return 0;
}