植树节浇水问题:求解被浇水次数最多的树苗

植树节快要到了,学校要组织志愿者去给树苗浇水。

有一排树苗,编号依次是 0, 1, 2, ... 。

现有 n 个志愿者去给树苗浇水,第 i 个志愿者选定了一个区间 [start_i, end_i],表示第 i 个志愿者将 [start_i, end_i] 这一区间内的每一棵树都浇一次水。

如某个志愿者选择的浇水区间为 [4, 9],表示他将给编号为 4, 5, 6, 7, 8, 9 的树各浇水一次。

当所有的志愿者完成各自所选区间的浇水后,可能有些树苗被不同的志愿者浇水多次,也可能有的树苗一次也没被浇过水。

请你求出浇水最多的树苗被浇了多少次。

输入格式

第 1 行,一个整数 n,表示志愿者的人数。

第 2 行到第 n + 1 行,每行两个整数 start_i, end_i0 <= start_i <= end_i <= n - 1),表示志愿者 i 选择的浇水区间。

输出格式

输出 1 行,1 个整数,表示浇水最多的树苗被浇水的次数。

输入输出样例

样例一

Input

4
2 4
1 4
6 7

Output

3

样例说明

第 1 名志愿者给编号为 0, 1, 2 的树苗浇水;

第 2 名志愿者给编号 2, 3, 4 的树苗浇水;

第 3 名志愿者给编号 1, 2, 3, 4 的树苗浇水;

第 4 名志愿者给编号 6, 7 的树苗浇水;

编号 0 到 7 的树被浇水的次数依次为: 1, 2, 3, 2, 2, 0, 1, 1 。 所以,被浇水次数最多的是编号为 2 的树,被浇水 3 次

C++ 代码示例

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
    int n;
    cin >> n;

    vector<pair<int, int>> intervals;

    for (int i = 0; i < n; i++) {
        int start, end;
        cin >> start >> end;
        intervals.push_back(make_pair(start, end));
    }

    vector<int> trees(n, 0);

    for (int i = 0; i < n; i++) {
        for (int j = intervals[i].first; j <= intervals[i].second; j++) {
            trees[j]++;
        }
    }

    int maxWatering = *max_element(trees.begin(), trees.end());

    cout << maxWatering << endl;

    return 0;
}
植树节浇水问题:求解被浇水次数最多的树苗

原文地址: https://www.cveoy.top/t/topic/o7DC 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录