1 条题解

  • 0
    @ 2026-3-9 9:50:26

    文字教学

    这道题数据规模大,用差分法高效处理区间更新:

    1. 定义差分数组 d,对区间 [a,b] 浇水一次,只需 d[a] += 1d[b+1] -= 1
    2. 遍历差分数组计算前缀和,前缀和的值就是当前树苗被浇水的次数,同时记录最大值即可。

    代码

    #include <bits/stdc++.h>
    using namespace std;
    
    const int N = 1e6 + 10;
    int d[N];
    
    int main() {
        ios::sync_with_stdio(false);
        cin.tie(0);
        int n;
        cin >> n;
        while (n--) {
            int a, b;
            cin >> a >> b;
            d[a]++;
            d[b + 1]--;
        }
        int cur = 0, mx = 0;
        for (int i = 0; i < N; ++i) {
            cur += d[i];
            if (cur > mx) mx = cur;
        }
        cout << mx << endl;
        return 0;
    }
    
    • 1

    信息

    ID
    11165
    时间
    1000ms
    内存
    512MiB
    难度
    3
    标签
    递交数
    3
    已通过
    2
    上传者