A29699.区间合并题解
2026-07-24 10:50:52
发布于:浙江
3阅读
0回复
0点赞
acgo A29699.区间合并
#include<bits/stdc++.h>
using namespace std;
struct stu{
int l,r;
}a[200010],b[200010];
bool cmp(stu x,stu y){
return x.l<y.l;
}
int main(){
int n,cnt=0,las=-1;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].l>>a[i].r;
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++){
if(las<a[i].l){
b[++cnt]={a[i].l,a[i].r};
las=a[i].r;
}
else{
las=max(las,a[i].r);
b[cnt].r=las;
}
}
cout<<cnt<<endl;
return 0;
}
一本通 1236:区间合并
#include<bits/stdc++.h>
#define inf 100000000
using namespace std;
struct node{
int left,right;
}a[100005];
int cmp(struct node a,struct node b)
{
return a.left<b.left||a.left==b.left&&a.right<b.right;
}
int main()
{
int n;
int i;
int max=-inf;
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i].left>>a[i].right;
sort(a+1,a+1+n,cmp);
for(i=1;i<n;i++)
{
if(a[i].right>max)
max=a[i].right;
if(a[i+1].left>max)
{
cout<<"no"<<endl;
return 0;
}
}
if(a[i].right>max)
max=a[i].right;
cout<<a[1].left<<" "<<max;
return 0;
}
求关!
这里空空如也





有帮助,赞一个