问题 A: yangftc的时间安排

本文深入探讨了一种基于贪心算法的时间调度策略,旨在解决任务时间重叠问题,确保任务的有效安排。通过实例演示,详细解释了如何通过升序排列任务结束时间并检查时间重叠来确定任务是否可以被合理安排,最终输出YES或NO。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题 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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值