1 条题解

  • 1
    @ 2025-1-12 15:13:24

    分教室问题,我们把所有区间左端点映射为偶数,右端点映射为奇数,排序后遍历所有点,遇到偶数答案 ans ++,奇数 ans --,一直取 max,期间需要的最多教室数即为答案。

    #include <iostream>
    #include <algorithm>
    using namespace std;
    const int N = 100100;
    int n;
    int b[2 * N], idx;
    
    int main()
    {
        cin >> n;
        for(int i = 0; i < n; ++ i)
        {
            int l, r;
            cin >> l >> r;
            b[idx ++] = l * 2;
            b[idx ++] = r * 2 + 1;
        }
    
        sort(b, b + idx);
    
        int res = 1, t = 0;
        for(int i = 0; i < idx; i ++)
        {
            if(b[i] % 2 == 0) t ++;
            else t --;
            res = max(res, t);
        }
        printf ("%d\n", res);
        return 0;
    }
    
    • 1

    信息

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