【深基7.例4】歌唱比赛 · 教师题解
【深基7.例4】歌唱比赛
解题思路
每名选手统计总分、最大分和最小分。用总分减去一个最大分和一个最小分,再除以 m-2。维护所有选手得分的最大值。
正确性说明
减法恰好剔除两名评委的评分,即使最高分或最低分重复,也只减去各一个。遍历维护最大值得到最高得分。
易错点
平均数使用实数除法;最高分、最低分各去掉一个,不能去掉所有相同分数。题意要求至少三名评委。
复杂度
时间 O(nm),空间 O(1)。
参考代码(C++11)
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n, m;
cin >> n >> m;
double best = 0;
for (int i = 0; i < n; i++) {
int sum = 0, lo = 11, hi = -1;
for (int j = 0; j < m; j++) {
int x;
cin >> x;
sum += x;
lo = min(lo, x);
hi = max(hi, x);
}
best = max(best, 1.0 * (sum - lo - hi) / (m - 2));
}
cout << fixed << setprecision(2) << best << "\n";
return 0;
}