1 条题解
-
0
【深基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