洛谷P2434 [SDOI2005]区间

传送门

这个题第一眼以为是一道区间合并(但其实就是区间合并),如果用区间合并的话只要输出合并不了的区间就行了。这个题不用区间合并也行,比方说贪心,那么贪心策略是什么呢?这时区间合并就提供给我们思路了,因此我们先排序左端点,比较右端点和下一个左端点的大小,如果合并不了就输出,继续判断下一组,这就是我们的贪心策略。

其实这个题本质还是结构体排序,因此对新学结构体的人来说是一道很好地练习题。

#include<iostream>
#include<cstdio>
#include<algorithm>

using namespace std;

int n;

struct A
{
    int l,r;
}a[50050];

bool cmp(A x,A y)
{
    return x.l<y.l;
}

int main()
{
    int i,j;
    cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i].l>>a[i].r;
    sort(a+1,a+1+n,cmp);
    int ansl=a[1].l,ansr=a[1].r;
    for(int i=2;i<=n;i++)
    {
        if(a[i].l<=ansr) ansr=max(ansr,a[i].r);
        else
        {
            cout<<ansl<<" "<<ansr<<endl;
            ansl=a[i].l;
            ansr=a[i].r;
        }
    }
    cout<<ansl<<" "<<ansr<<endl;
    return 0;
}

 

posted @ 2020-08-16 18:58  国服混子瑶  阅读(92)  评论(0编辑  收藏  举报