1 条题解

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

    自动搬运

    查看原文

    来自洛谷,原作者为

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

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

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

    以下是正文


    [语言月赛 202412] 旗鼓相当的对手 题解

    Source & Knowledge

    本题来源于 2024 年 12 月的语言月赛,主要考察复杂的逻辑判断和比较结构。

    文字题解

    题目大意

    本题要求找出在两场 XCPC 赛事中,四支队伍之间有多少对『旗鼓相当的对手』。所谓旗鼓相当的对手,指的是两支队伍在一场比赛中的排名一高一低,在另一场比赛中的排名则相反。

    解析

    读入

    首先需要读取两行整数,分别代表两场比赛中四支队伍的排名。

    int A1, B1, C1, D1, A2, B2, C2, D2;
    cin >> A1 >> B1 >> C1 >> D1;
    cin >> A2 >> B2 >> C2 >> D2;
    

    判断旗鼓相当的对手

    我们需要比较每一对队伍在两场比赛中的排名,来判断它们是否为旗鼓相当的对手。由于队伍数量固定且只有四支,我们可以通过 if 语句来实现这一点。

    【判断逻辑】
    对于每一对队伍 (x, y),我们需要检查以下条件是否满足:

    • 在第一场比赛中,x 的排名小于 y 的排名,并且在第二场比赛中,x 的排名大于 y 的排名;
    • 或者,在第一场比赛中,x 的排名大于 y 的排名,并且在第二场比赛中,x 的排名小于 y 的排名。 我们可以通过枚举每一对队伍来检查上述条件。
    int count = 0;
    // 检查 A 和 B
    if ((A1 < B1 && A2 > B2) || (A1 > B1 && A2 < B2)) count++;
    // 检查 A 和 C
    if ((A1 < C1 && A2 > C2) || (A1 > C1 && A2 < C2)) count++;
    // 检查 A 和 D
    // ... (类似地检查其他队伍对)
    

    输出

    最后,输出计算出的旗鼓相当的对手对数。

    cout << count << endl;
    

    通过上述步骤,我们可以有效地计算出两场比赛中旗鼓相当的对手对数。注意,由于题目保证了排名是 1 到 4 的整数,并且每个整数在每场比赛中恰好出现一次,因此我们可以直接比较排名而不用担心重复或无效的排名。

    • 1

    信息

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