C++ 代码实现:语文成绩统计

题目背景

语文老师要给大家报成绩了。但是他很喜欢卖关子。

题目描述

班级里有学号为 1 ~ n 的 n 名同学。

语文老师的公布成绩方法是这样的:

  • 一开始所有同学的分数都是 0 分。
  • 他会增加 m 次分数。每一次,他会说出三个数字 l, r, x,表示学号从 l 到 r 的同学分数增加了 x。

小西瓜的学号是 k,但是他每次都算不清自己的成绩到底是多少,小西瓜向你求助,希望你能帮他算出他的语文成绩。

输入格式

第一行有两个整数 n,m,k,分别代表学生数、增加分数的次数和小西瓜的学号。

接下来 m 行,每行有三个数,l,r,x,代表给第 l 个到第 r 个学生每人增加 x 分。

输出格式

输出仅一行,代表小西瓜的语文成绩。

样例 #1

样例输入 #1

3 3 2
1 1 1
1 2 2
2 3 3

样例输出 #1

5

提示

第一次给 1 号加了 1 分,成绩分别是 1 0 0.

第二次给 1 ~ 2 号加了 2 分,成绩分别是 3 2 0.

第三次给 2 ~ 3 号加了 3 分,成绩分别是 3 5 3.

小西瓜学号为 2,他的分数就是 5.

数据范围

对于 60% 的数据,有 n ≤ 10^3。

对于 100% 的数据,有 m≤ n ≤ 10^5,x ≤ 100。

C++ 代码

#include <iostream>
#include <vector>

using namespace std;

int main() {
    int n, m, k;
    cin >> n >> m >> k;

    vector<int> scores(n+1, 0); // 初始化分数数组

    for (int i = 0; i < m; i++) {
        int l, r, x;
        cin >> l >> r >> x;
        // 将第 l 到第 r 个同学的分数增加 x 分
        for (int j = l; j <= r; j++) {
            scores[j] += x;
        }
    }

    // 输出小西瓜的分数
    cout << scores[k] << endl;

    return 0;
}
C++ 代码实现:语文成绩统计

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

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