1 条题解

  • 0
    @ 2059-10-18 7:08:16

    【深基5.例5】旗鼓相当的对手

    解题思路

    保存三科分数,枚举所有 i<j,同时检查每科差不超过 5 且总分差不超过 10,满足则计数。

    正确性说明

    每个无序学生对恰好枚举一次,四个限制与题目定义一致,因此计数不重不漏。

    易错点

    必须比较绝对值;同一个学生不能与自己配对。

    复杂度

    时间 O(N²),空间 O(N)。

    参考代码(C++11)

    #include <bits/stdc++.h>
    using namespace std;
    
    int main() {
        ios::sync_with_stdio(false);
        cin.tie(nullptr);
        int n;
        cin >> n;
        vector<array<int, 3>> a(n);
        for (auto &v : a)
            cin >> v[0] >> v[1] >> v[2];
        int ans = 0;
        for (int i = 0; i < n; i++)
            for (int j = i + 1; j < n; j++) {
                bool ok = true;
                int s = 0;
                for (int k = 0; k < 3; k++) {
                    if (abs(a[i][k] - a[j][k]) > 5)
                        ok = false;
                    s += a[i][k] - a[j][k];
                }
                if (ok && abs(s) <= 10)
                    ans++;
            }
        cout << ans << "\n";
        return 0;
    }
    
    • 1

    信息

    ID
    82
    时间
    1000ms
    内存
    125MiB
    难度
    进阶
    标签
    递交数
    2
    已通过
    1
    上传者