求问S组T1
2025-11-01 22:16:09
发布于:浙江
哪位大佬可以帮我看一下我S组T1是不是对的
#include<bits/stdc++.h>
#define int long long
using namespace std;
struct node
{
int w[5],maxn,cd;
}a[100005];
struct bl
{
int cz1,cz2,vmaxn,vcd,v,id,nid;
bool vis=false;
}b[100005];
bool cmpbl(bl x,bl y)
{
if(x.cz1==y.cz1)return x.vmaxn>y.vmaxn;
return x.cz1>y.cz1;
}
bool cmpbltw(bl x,bl y)
{
int xx=(x.vis?x.cz2:x.cz1),yy=(y.vis?y.cz2:y.cz1);
if(xx==yy)return x.v>y.v;
return xx>yy;
}
void solve()
{
int n;
cin>>n;
int li=n/2;
for(int i=1;i<=n;i++)
{
cin>>a[i].w[1]>>a[i].w[2]>>a[i].w[3];
if(a[i].w[1]>=a[i].w[2]&&a[i].w[1]>=a[i].w[3])a[i].maxn=1;
if(a[i].w[2]>=a[i].w[1]&&a[i].w[2]>=a[i].w[3])a[i].maxn=2;
if(a[i].w[3]>=a[i].w[2]&&a[i].w[3]>=a[i].w[1])a[i].maxn=3;
if(a[i].w[1]<=a[i].w[2]&&a[i].w[1]>=a[i].w[3]||a[i].w[1]>=a[i].w[2]&&a[i].w[1]<=a[i].w[3])a[i].cd=1;
if(a[i].w[2]<=a[i].w[1]&&a[i].w[2]>=a[i].w[3]||a[i].w[2]>=a[i].w[1]&&a[i].w[2]<=a[i].w[3])a[i].cd=2;
if(a[i].w[3]<=a[i].w[2]&&a[i].w[3]>=a[i].w[1]||a[i].w[3]>=a[i].w[2]&&a[i].w[3]<=a[i].w[1])a[i].cd=3;
}
for(int i=1;i<=n;i++)
{
b[i].vmaxn=a[i].w[a[i].maxn];
b[i].id=i;
b[i].nid=a[i].maxn;
b[i].v=b[i].vmaxn;
b[i].vcd=a[i].w[a[i].cd];
b[i].cz1=b[i].vmaxn-b[i].vcd;
b[i].cz2=b[i].vcd-a[i].w[6-a[i].maxn-a[i].cd];
}
sort(b+1,b+1+n,cmpbl);
int c1=0,c2=0,c3=0;
for(int i=1;i<=n;i++)
{
int cur=b[i].nid;
if(cur==1)c1++;
if(cur==2)c2++;
if(cur==3)c3++;
if(cur==1&&c1>li)b[i].vis=true,b[i].v=b[i].vcd,b[i].nid=a[b[i].id].cd;
if(cur==2&&c2>li)b[i].vis=true,b[i].v=b[i].vcd,b[i].nid=a[b[i].id].cd;
if(cur==3&&c3>li)b[i].vis=true,b[i].v=b[i].vcd,b[i].nid=a[b[i].id].cd;
}
sort(b+1,b+1+n,cmpbltw);
c1=c2=c3=0;
for(int i=1;i<=n;i++)
{
int cur=b[i].nid;
if(cur==1)c1++;
if(cur==2)c2++;
if(cur==3)c3++;
if(cur==1&&c1>li)b[i].v=a[b[i].id].w[6-a[b[i].id].maxn-a[b[i].id].cd];
if(cur==2&&c2>li)b[i].v=a[b[i].id].w[6-a[b[i].id].maxn-a[b[i].id].cd];
if(cur==3&&c3>li)b[i].v=a[b[i].id].w[6-a[b[i].id].maxn-a[b[i].id].cd];
}
int ans=0;
for(int i=1;i<=n;i++)
{
ans+=b[i].v;
}
cout<<ans<<endl;
}
signed main()
{
int t;
cin>>t;
while(t--)solve();
return 0;
}
这里空空如也







有帮助,赞一个