1 条题解

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

    自动搬运

    查看原文

    来自洛谷,原作者为

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

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

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

    以下是正文


    [语言月赛 202412] 古希腊掌管罚时的神 题解

    Source & Knowledge

    本题来源于 2024 年 12 月的语言月赛,主要考察一维循环和累加操作的应用。

    文字题解

    题目大意

    给定一系列有效提交记录,每条记录包含提交时间和是否通过的信息。需要计算一支队伍在比赛中的总罚时,罚时的计算方式是每道题目的第一次通过时间加上二十倍的未通过次数。

    解析

    注意到对于第 ii 个题目,假设它在第 tit_i 分钟通过,在这之前本题有 xix_i 次未通过提交,则本题贡献的罚时

    punishment(i)=ti+20xi\mathrm{punishment}(i)=t_i + 20x_i

    则总罚时

    $$\begin{aligned} \mathrm{Punishment}&=\mathrm{punishment}(1)+\mathrm{punishment}(2)+\dots +\mathrm{punishment}(k)\\ &=t_1+20x_1 + t2+20x_2 + \dots t_k + 20x_k\\ &=(t_1+t_2+\dots t_k)+20(x_1 + x_2 + \dots x_k) \end{aligned} $$

    即总罚时等于所有通过记录的时间之和加上 2020 倍的所有题目未通过次数。可以依据这个式子,来计算答案。

    当读入到一条通过记录时,就给总时间加上该记录的时间,否则这条记录只会贡献 2020 分钟罚时。

    读入

    首先读取有效提交记录的条数 n

    int n;
    cin >> n;
    

    计算罚时

    依据说明完成即可。

    long long ans = 0;
    for (int i = 0; i < n; ++i) {
        int a, b;
        cin >> a >> b;
        if (b) {
            ans += a; // 通过记录,加上通过时间
        } else {
            ans += 20; // 未通过记录,加上 20
        }
    }
    

    输出

    最后,输出计算出的总罚时。

    cout << ans << endl;
    

    通过上述步骤,我们可以有效地计算出队伍在比赛中的总罚时。

    • 1

    [语言月赛 202412] 古希腊掌管罚时的神

    信息

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