問題 A: yangftc的時間安排

問題 A: yangftc的時間安排

題目描述
yangftc需要安排他的時間,有很多事情做,每個事情都有固定的開始和結束時間,因爲yangftc每次只能做一件事情,如果有兩個或者多個事情的時間重合了那麼他就會說 NO,否則他就會說 YES 。
輸入
第一個數字t代表樣例數量,
後面t個樣例,每個樣例輸入一個n表示事情的數量,後面n行每行兩個數字l r表示這個事情的開始和結束時間;
輸出
判斷yangftc會說什麼 YES或者 NO 。
數據範圍 1<=t<=500 1<=n<=100 1<=l<=r<=100000

2
3
1 3
4 5
6 7
2
1 3
3 4

在這裏插入圖片描述
貪心思想求解,將結束的時間升序排個序,如果前一個結束與後一個開始時間重疊就輸出NO,否則最後輸出YES

#include<bits/stdc++.h>
#define swap(x, y) {int temp=x;x=y;y=temp;}
using namespace std;
const int N=1005;
typedef struct{
    int x,y;
}Node;
Node node[N];
bool cmp(Node& a,Node& b){
    return a.y<b.y;
}
int main()
{
    int T;
    cin>>T;
    while(T--){
        int t;
        bool flag=true;
        cin>>t;
        for(int i=0;i<t;i++){
            cin>>node[i].x>>node[i].y;
        }
        sort(node,node+t,cmp);
        int temp=node[0].y;
        for(int i=1;i<t;i++){
            if(node[i].x<=temp){
                cout<<"NO"<<endl;
                flag=false;
                break;
            }else
            temp=node[i].y;
            }
            if(flag)
              cout<<"YES"<<endl;
    }
    return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章