1 条题解

  • 0
    @ 2024-10-29 9:48:50

    解析:在可以安排的活动中找结束时间最早的安排。 先将各个活动按结束时间排序,找到第一个可以安排的活动,安排之,然后再安排下一个活动,直到活动都遍历完成;

    #include<bits/stdc++.h>
    using namespace std;
    struct node{
        int s;//开始时间
        int f;//结束时间
        //重置小于号运算符,结束时间小的小
        bool operator < (const node &x) const{
            return f<x.f;
        }
    }a[1005];
    int n;
    int ans=0;
    int main() {
        cin>>n;
        for(int i=1;i<=n;i++){
            cin>>a[i].s>>a[i].f;
        }
        sort(a+1,a+n+1);//按结束时间从小到大排序
        int t=0;//最早可以安排活动的时间
        for(int i=1;i<=n;i++){//枚举每个活动
            if (a[i].s>=t){//可以安排
                ans++;//安排之
                t=a[i].f;//更新可以安排活动的时间
            }
        }
        cout<<ans;
        return 0;
    }
    
    • 1

    信息

    ID
    604
    时间
    1000ms
    内存
    512MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者