9.24
区间合并
include
include
include
using namespace std;
//用的vector容器 nums来记录每次的输入区间
typedef pair<int,int>PII;
vector
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;
}
浙公网安备 33010602011771号