1 条题解

  • 0
    @ 2024-4-2 19:57:37

    运用了差分思想

    #include
    using namespace std;
    
    int a[11451411],sum[11451411]; // 定义大小为 11451411 的整型数组 a 和 sum,用于记录区间的起始和结束情况以及每个位置的覆盖次数
    int i,j,n,l,r; // 声明整型变量 i、j、n、l、r,用于循环和记录区间的起始和结束位置
    
    int main()
    {
    int max = 0; // 用于记录覆盖区间最多的位置数
    cin >> n; // 表示区间的个数
    for (i = 1; i<=n; i++) // 循环读入 n 个区间的起始和结束位置
    {
    cin >> l >> r;
    a[l] += 1; //修改 
    a[r+1] -= 1; // 修改使l-r之间+1
    }
    for (i = 1; i<= 1000000; i++) // 循环遍历所有可能的位置(假设范围为 1 到 1000000)
    {
    sum[i] = sum[i-1] + a[i]; // 计算每个奶牛的覆盖次数,累加前面所有奶牛的占位情况
    if (sum[i] > max) // 判断当前位置的次数是否超过之前的最大值
    {
    max = sum[i]; // 如果超过,则更新最大值
    }
    }
    cout << max << "\n"; // 输出覆盖区间最多的位置数
    return 0; // 返回程序执行成功的状态
    }
    

    信息

    ID
    2875
    时间
    1000ms
    内存
    256MiB
    难度
    5
    标签
    递交数
    203
    已通过
    69
    上传者