1. 程式人生 > 實用技巧 >洛谷P2434 [SDOI2005]區間

洛谷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; }