9.24

区间合并

include

include

include

using namespace std;
//用的vector容器 nums来记录每次的输入区间
typedef pair<int,int>PII;
vectornums,res;
int main()
{
int st=-2e9,ed=-2e9;
int n;
cin>>n;
while(n--)
{
int l,r;
cin>>l>>r;
//用push_back()接收
nums.push_back({l,r});
}
//sort()会将每段区间的第一位进行排序
sort(nums.begin(),nums.end());
//循环遍历
for(auto item:nums)
{
//尾在下一次的头前就有一个单独的区间,记录到res中
if(ed<item.first)
{
if(ed!=-2e9)res.push_back({st,ed});
st=item.first,ed=item.second;
}
//否则如果尾在第二个尾前,更新尾部,仍然在一个区间里
//最后一种情况是新区间在旧区间,这种被包含在第二种情况里,不用管
else if(ed<item.second)
ed=item.second;

}
res.push_back({st,ed});
cout<<res.size()<<endl;
return 0;

}

posted @ 2025-09-27 18:44  苏楗轶  阅读(10)  评论(0)    收藏  举报