基础算法
区间合并:
#includeusing namespace std; typedef pair <int,int> pii; vector pos; void merge(vector &pos) { vector ans; sort(pos.begin(),pos.end()); int st=-1e9+10,ed=-1e9+10; for (auto ver:pos) { if (ed<ver.first) { if (st!=-1e9+10)ans.push_back({st,ed}); st=ver.first,ed=ver.second; } else { ed=max(ed,ver.second); } } if (st!=-1e9+10)ans.push_back({st,ed}); pos=ans; } int main() { int n; cin>>n; while (n--) { int l,r; cin>>l>>r; pos.push_back({l,r}); } merge(pos); cout< endl; //for (auto ver:pos)cout< return 0; }