社区讨论

90pts求调 WA#1#4

P14361[CSP-S 2025] 社团招新参与者 1已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@mhiyka10
此快照首次捕获于
2025/11/03 17:49
4 个月前
此快照最后确认于
2025/11/03 17:49
4 个月前
查看原帖
rt.
CPP
#include<bits/stdc++.h>
using namespace std;
int t,n,cnta,cntb,cntc,ans;
struct Node{
	int a,b,c;
}a[100001];
bool cmp(Node n1,Node n2){
	int l=max(n1.a,max(n1.a,n1.b));
	int r=max(n2.a,max(n2.a,n2.b));
	int l1,r1;
	if(l==n1.a){
		l1=max(n1.b,n1.c);
	}
	if(l==n1.b){
		l1=max(n1.a,n1.c);
	}
	if(l==n1.c){
		l1=max(n1.b,n1.a);
	}
	if(r==n2.a){
		r1=max(n2.b,n2.c);
	}
	if(r==n2.b){
		r1=max(n2.a,n2.c);
	}
	if(r==n2.c){
		r1=max(n2.b,n2.a);
	}
	return (l-l1)>(r-r1);
}
int main(){
	cin>>t;
	while(t--){
		ans=0;
		cnta=0;
		cntb=0;
		cntc=0;
		cin>>n;
		for(int i=1;i<=n;i++){
			cin>>a[i].a>>a[i].b>>a[i].c;
		}
		sort(a+1,a+n+1,cmp);
		for(int i=1;i<=n;i++){
			if((max(a[i].a,max(a[i].b,a[i].c))==a[i].a)&&(cnta+1)<=(n/2)){
				cnta++;
				ans+=a[i].a;
			}else if((max(a[i].a,max(a[i].b,a[i].c))==a[i].b)&&(cntb+1)<=(n/2)){
				cntb++;
				ans+=a[i].b;
			}else if((max(a[i].a,max(a[i].b,a[i].c))==a[i].c)&&(cntc+1)<=(n/2)){
				cntc++;
				ans+=a[i].c;
			}else if((max(a[i].a,max(a[i].b,a[i].c))==a[i].c)&&(cntc)>=(n/2)){
				if(max(a[i].a,a[i].b)==a[i].a){
					cnta++;
					ans+=a[i].a;
				}else{
					cntb++;
					ans+=a[i].b;
				}
			}else if((max(a[i].a,max(a[i].b,a[i].c))==a[i].b)&&(cntb)>=(n/2)){
				if(max(a[i].a,a[i].c)==a[i].a){
					cnta++;
					ans+=a[i].a;
				}else{
					cntc++;
					ans+=a[i].c;
				}
			}else if((max(a[i].a,max(a[i].b,a[i].c))==a[i].a)&&(cnta)>=(n/2)){
				if(max(a[i].c,a[i].b)==a[i].c){
					cntc++;
					ans+=a[i].c;
				}else{
					cntb++;
					ans+=a[i].b;
				}
			}
		}
		cout<<ans<<endl;
	}
	
	return 0;
}
代码有点乱,请别介意

回复

1 条回复,欢迎继续交流。

正在加载回复...