社区讨论
60求调
P14361[CSP-S 2025] 社团招新参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mhkpenw4
- 此快照首次捕获于
- 2025/11/04 23:08 4 个月前
- 此快照最后确认于
- 2025/11/08 07:47 4 个月前
CPP
#include <bits/stdc++.h>
using namespace std;
#define int long long
int t,n,a[100005][5],s[5];
int f(int a,int b,int c)
{
if(a>b&&a>c) return 1;
if(b>a&&b>c) return 2;
return 3;
}
int f2(int a,int b,int c)
{
int maxx=max(max(a,b),c),minn=min(min(a,b),c);
if(a!=maxx&&a!=minn) return 1;
if(b!=maxx&&b!=minn) return 2;
return 3;
}
signed main()
{
cin>>t;
while(t--)
{
cin>>n;
s[1]=0;
s[2]=0;
s[3]=0;
int sum=0;
for(int i=1;i<=n;i++)
{
cin>>a[i][1]>>a[i][2]>>a[i][3];
int x=f(a[i][1],a[i][2],a[i][3]);
s[x]++;
sum+=a[i][x];
}
if(s[1]<=n/2&&s[2]<=n/2&&s[3]<=n/2) {cout<<sum<<endl;continue;}
vector<int> v;
int tt;
if(s[1]>n/2) tt=1;
else if(s[2]>n/2) tt=2;
else tt=3;
for(int i=1;i<=n;i++)
{
int x=f(a[i][1],a[i][2],a[i][3]);
if(x!=tt) continue;
int x2=f2(a[i][1],a[i][2],a[i][3]);
v.push_back(a[i][x]-a[i][x2]);
}
sort(v.begin(),v.end());
for(int i=0;i<s[tt]-n/2;i++) sum-=v[i];
cout<<sum<<endl;
}
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...