2AC,2WA求调

P5738 【深基7.例4】歌唱比赛

首先,用 `set` 存肯定不是可行的方案。如果有多个评委给出了相同的分数,`set` 会自动去重,仅保留一个。这样,在去除最高分和最低分后,剩余的分数可能不再是原本的 $m-2$ 个评分 其次,写不了那么长(不是 我修改了一下,用的 `vector`,再对每个 `vector` 排序,应该会好一些: ```cpp #include<bits/stdc++.h> using namespace std; vector<vector<int>> scores; int n, m; int main() { scanf("%d%d", &n, &m); scores.resize(n); for (int i = 0; i < n; i++) { scores[i].resize(m); for (int j = 0; j < m; j++) { scanf("%d", &scores[i][j]); } sort(scores[i].begin(), scores[i].end()); } double maxAverage = 0; for (int i = 0; i < n; i++) { double sum = 0; for (int j = 1; j < m - 1; j++) { sum += scores[i][j]; } double average = sum / (m - 2); maxAverage = max(maxAverage, average); } printf("%.2lf\n", maxAverage); return 0; } ```
by Zemu_Ooo @ 2024-01-01 12:41:55


猜你想搜:multiset
by 沉石鱼惊旋 @ 2024-01-01 12:47:56


@[沉石鱼惊旋](/user/516346) @[Zemu_Ooo](/user/467824) 看到了,感谢大佬指正!
by lizeyuhello @ 2024-01-01 13:14:22


# 修改后代码 ```cpp #include<bits/stdc++.h> using namespace std; vector<multiset<int> > a; multiset<int> t; double ans; int n, m; int main() { a.push_back(t); scanf("%d%d", &n, &m); for (int i = 0, x; i < n; i++) { t.clear(); for (int j = 0; j < m; j++) { scanf("%d", &x); t.insert(x); } a.push_back(t); } for (int i = 1; i <= n; i++) { a[i].erase(a[i].begin()); a[i].erase(--a[i].end()); } double p; for (int i = 1; i <= n; i++) { p = 0; for (multiset<int>::iterator it = a[i].begin(); it != a[i].end(); it++) p += *it; p = p * 1.0 / a[i].size(); ans = max(ans, p); } printf("%.2lf", ans); return 0; } ```
by lizeyuhello @ 2024-01-01 13:20:36


@[沉石鱼惊旋](/user/516346) @[Zemu_Ooo](/user/467824)
by lizeyuhello @ 2024-01-01 13:21:16


|