1 条题解

  • 2
    @ 2024-7-26 16:08:10

    hello 欢迎观赏本蒟蒻的题解 以下言辞若有不当 请及时指出来 共同学习!


    这是一个简单的 贪心策略


    核心就是优先按照最小的时间点进行计数 从最小的开始计算的话 就可以最大程度的保证不漏选不矛盾;;

    中间排序我用的是结构体 然后按照结束时间点优先的方式从小到大排序 当然 理论也可以使用pair对组 直接用自带的sort排序 因为用sort排序会按照第一个元素从小到大 如果一样大的情况就按照第二个元素从小到大 也能做到优先排序 同理 优先队列(priority_queue)也可以

    Code:

    #include <iostream>
    #include <algorithm>
    #include <string>
    #define int long long
    
    using namespace std;
    
    typedef struct
    {
        int x , y;
    }Node;
    
    bool cmp(Node a , Node b)
    {
        if (a.y == b.y) return a.x < b.x;
        return a.y < b.y;
    }
    
    const int N = 100010;
    int n , ans;
    Node a[N];
    
    signed main()
    {
        cin >> n;
        for (int i = 1 ; i <= n ; i ++ ) cin >> a[i].x >> a[i].y;
    
        sort(a + 1 , a + 1 + n , cmp);
    
        int temp = a[1].y;
        for (int i = 2 ; i <= n ; i ++ )
        {
            if (a[i].x >= temp)
            {
                ans ++;
                temp = a[i].y;
            }
        }
        cout << ans + 1<< endl;
        return 0;
    }
    
    • 1

    信息

    ID
    1356
    时间
    1000ms
    内存
    128MiB
    难度
    10
    标签
    (无)
    递交数
    5
    已通过
    2
    上传者