1 条题解

  • 0
    @ 2025-12-15 21:02:49

    #include #include #include using namespace std;

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

    vector<int> scores(n);
    for (int i = 0; i < n; i++) {
        cin >> scores[i];
    }
    
    // 差分数组
    vector<int> diff(n + 1, 0);
    
    // 处理p次操作
    for (int i = 0; i < p; i++) {
        int x, y, z;
        cin >> x >> y >> z;
        // 注意:x、y从1开始,转换为0-based
        diff[x - 1] += z;
        diff[y] -= z;  // y是闭区间,所以y+1处减去z
    }
    
    // 根据差分数组计算最终分数
    int add = 0;
    int minScore = 1e9; // 设一个很大的初始值
    
    for (int i = 0; i < n; i++) {
        add += diff[i];
        scores[i] += add;
        if (scores[i] < minScore) {
            minScore = scores[i];
        }
    }
    
    cout << minScore << endl;
    
    return 0;
    

    }

    • 1

    信息

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