问题标题: 酷町堂:4217 0!!!

0
0
汤启恩
汤启恩
新手光能
新手光能
#include<bits/stdc++.h>
using namespace std;
struct tang{
    int s,e;
}a[1001];
bool cmp(tang a,tang b){
    return a.s<b.s;
}
int main(){
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i].s>>a[i].e;
    }
    sort(a+1,a+n+1,cmp);
    int e=a[1].e,s=a[1].s;
    for(int i=2;i<=n;i++){
        if(e<a[i].s){
        	e=a[i-1].e;
            cout<<s<<' '<<e<<endl;
            s=a[i].s;
        }
    }
    cout<<s<<' '<<a[n].e;
    return 0;
}

Why??

汤启恩在2021-01-05 20:58:51追加了内容

dingg


0
王逸凡
王逸凡
初级守护
初级守护

Why!!! me too!!!! l don't do it!!!!

I'm 0 ,too!!!

你的思路是什么?

看看我能不能按你的思路写出来!

0
王逸凡
王逸凡
初级守护
初级守护

#include<bits/stdc++.h>
using namespace std;
int n;
int a[1005],b[1005];
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i]>>b[i];
    }
    for(int i=1;i<=n;i++){
        for(int j=i+1;j<=n;j++){
            if(a[i]>=a[j]&&a[i]<=b[j]){
                a[i]=0,b[j]=0;
                break;
            }
            else if(a[i]>=a[j]&&b[i]<=b[j]){
                a[i]=0,b[i]=0;
                break;
            }
            else if(b[i]>=a[j]&&b[i]<=b[j]){
                b[i]=0,a[j]=0;
                break;
            }
        }
    }
    for(int i=1;i<=n;i++){
        if(a[i]!=0){
            cout<<a[i]<<" ";
        }
        if(b[i]!=0){
            cout<<b[i]<<endl;
        }
    }
    return 0;
}

我的0分代码

0
0
0
0
武奕楷
武奕楷
新手天翼
新手天翼

我一百

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

思路:

1.定义结构体

2.按每个区间的左端点从小到大排序

3.遍历a数组如果a[i].l>p2(a数组:输入时的区间 p2:记录用的右端点)

    b[++cnt].l=p1;(b数组:输出时的区间;cnt:记录当前存到了b数组的哪一个,初值为零;p1:记录用的左端点,***.l或***.r:l为左端点,r为右端点)

    b[++cnt].l=p1;

    p1=a[i].l;

    b[cnt].r=p2;

    p2=a[i].r;

否则

    p2=max(p2,a[i].r);

 

4.特判:p1!=b[cnt].l||p2!=b[cnt].r

    b[++cnt].l=p1;

     b[cnt].r=p2;

 

5.输出

0
0
我要回答