区间合并

  1. #include <iostream>  
  2. #include <algorithm>  
  3. #include <vector>  
  4. using namespace std;  
  5. typedef pair<int,int>PII;  
  6. const int N=100010;  
  7. int n;  
  8. vector<PII>segs;  
  9. void merge(vector<PII>&segs){  
  10.     vector<PII>res;  
  11.     sort(segs.begin(),segs.end());  
  12.     int st=-2e9,ed=-2e9;  
  13.     for(auto item:segs){  
  14.         if(ed<item.first){  
  15.             if(st!=-2e9)res.push_back({st,ed});  
  16.             st=item.first,ed=item.second;  
  17.         }  
  18.         else ed=max(ed,item.second);  
  19.     }  
  20.     if(st!=-2e9)res.push_back({st,ed});  
  21.     segs=res;  
  22. }  
  23. int main()  
  24. {  
  25.     cin>>n;  
  26.     for(int i=0;i<n;i++){  
  27.         int x,y;  
  28.         cin>>x>>y;  
  29.         segs.push_back({x,y});  
  30.     }  
  31.       
  32.     merge(segs);  
  33.     cout<<segs.size()<<endl;  
  34.     return 0;  
  35. }  
posted @ 2023-01-13 14:42  SaulGoodman1  阅读(13)  评论(0)    收藏  举报