1 条题解

  • 0
    @ 2025-8-24 21:16:59

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar 一扶苏一
    休息结束。邮箱 yifusuyi@qq.com

    搬运于2025-08-24 21:16:58,当前版本为作者最后更新于2024-12-17 20:11:11,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    [语言月赛 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;
    

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

    • 1

    信息

    ID
    11103
    时间
    1000ms
    内存
    512MiB
    难度
    1
    标签
    递交数
    0
    已通过
    0
    上传者