1 条题解

  • 0
    @ 2026-6-19 10:30:45

    📝 题目大意

    高桥队和青木队进行了 NN 场比赛,每场比赛双方各获得一定分数。将 NN 场比赛的分数分别求和,总分高者获胜,总分相等则为平局。输出获胜队伍名称或 Draw

    💡 解题思路

    1. 题目分析NN 最多为 100100Xi,YiX_i, Y_i00100100 之间,因此总分最大为 100×100=10000100 \times 100 = 10000,完全在 int 范围内。本题只需分别累加两队分数,然后比较大小即可。
    2. 算法推导
      • sumTsumA 分别记录高桥队和青木队的总分(初始为 00)。
      • 遍历 NN 次,每次读入 X,YX, Y,将 XX 累加到 sumTYY 累加到 sumA
      • 比较 sumTsumA
        • sumT > sumA,输出 "Takahashi"
        • sumT < sumA,输出 "Aoki"
        • 否则输出 "Draw"
    3. 边界与细节
      • 双方分数均为 00 时(如样例 3 的第一轮),不影响比较结果,程序正常处理。
      • 总分正好相等时走 else 分支输出 Draw,注意字符串拼写不要出错。

    ⏱️ 复杂度分析

    • 时间复杂度O(N)O(N),只需一次遍历。
    • 空间复杂度O(1)O(1),仅使用常数个变量。

    💻 标准代码 (C++)

    #include <iostream>
    using namespace std;
    int main() {
        int N;
        cin >> N;
        int sumT = 0, sumA = 0;     // 分别记录高桥队和青木队的总分
        for (int i = 0; i < N; i++) {
            int X, Y;
            cin >> X >> Y;
            sumT += X;              // 累加高桥队的分数
            sumA += Y;              // 累加青木队的分数
        }
        if (sumT > sumA) {
            cout << "Takahashi" << endl;
        } else if (sumT < sumA) {
            cout << "Aoki" << endl;
        } else {
            cout << "Draw" << endl; // 总分相等,平局
        }
        return 0;
    }
    
    • 1

    信息

    ID
    766
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    (无)
    递交数
    1
    已通过
    1
    上传者