社区讨论
75pts求调
P14361[CSP-S 2025] 社团招新参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mhj8ww6w
- 此快照首次捕获于
- 2025/11/03 22:38 4 个月前
- 此快照最后确认于
- 2025/11/08 07:49 4 个月前
CPP
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5;
int t, n, a[N][5], b[5], used[N];
long long ans = 0;
int main() {
// freopen("club.in", "r", stdin);
// freopen("club.out", "w", stdout);
cin.tie(0)->sync_with_stdio(0);
for (cin >> t; t--;) {
cin >> n;
ans = 0;
memset(b, 0, sizeof(b));
memset(used, 0, sizeof(used));
for (int i = 1; i <= n; i++) cin >> a[i][1] >> a[i][2] >> a[i][3];
vector<array<int, 3>> data;
int pos = 1;
for (int i = 1; i <= n; i++) {
int mx = 0, col = 1;
for (int j = 1; j <= 3; j++) {
if (a[i][j] > mx) {
mx = a[i][j], col = j;
}
}
ans += mx;
b[col]++;
}
for (int i = 1; i <= 3; i++) {
if (b[i] > n / 2) pos = i;
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= 3; j++) {
if (j == pos) continue;
if (a[i][j] > a[i][pos]) break;
int d = a[i][j] - a[i][pos];
if (d < 0) data.push_back({d, j, i});
}
}
sort(data.begin(), data.end(), greater<array<int, 3>>());
for (int T = 0; T < data.size(); T++) {
auto p = data[T];
int d = p[0], j = p[1], i = p[2];
if (b[pos] > n / 2) {
if (b[j] < n / 2 && !used[i]) {
used[i] = 1;
b[j]++;
b[pos]--;
ans += d;
}
}
}
cout << ans << '\n';
}
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...