题解 B4084

· · 题解

[语言月赛 202412] 题目名没活了 题解

Source & Knowledge

本题来源于 2024 年 12 月的语言月赛,主要考察一维循环

文字题解

题目大意

给定一支队伍的提交记录,需要计算出这支队伍共通过了多少道不同的题目。

解析

读入

首先读取记录条数 n 和题目数量 p

int n, p;
cin >> n >> p;

记录题目通过状态

我们可以使用一个布尔数组 passed 来记录每道题目是否已经被通过,初始时所有值均为 false

bool passed[1005];

处理提交记录

遍历每条提交记录,如果记录表示通过(state_i == 1),并且该题目之前没有被标记为通过,则将其标记为通过。

for (int i = 0; i < n; ++i) {
    int pid, state;
    cin >> pid >> state;
    if (state == 1 && !passed[pid]) {
        passed[pid] = true;
    }
}

计算通过题目数量

最后,遍历 passed 数组,统计被标记为 true 的元素数量,即为通过的不同题目数量。

int count_passed = 0;
for (int i = 1; i <= p; ++i) {
    if (passed[i]) count_passed++;
}

输出

输出通过的不同题目数量。

cout << count_passed << endl;

通过上述步骤,我们可以有效地计算出这支队伍共通过了多少道不同的题目。