社区讨论

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 条回复,欢迎继续交流。

正在加载回复...