社区讨论

95,WA1,求调

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

讨论操作

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

当前回复
0 条
当前快照
1 份
快照标识符
@mhkswjeg
此快照首次捕获于
2025/11/05 00:46
4 个月前
此快照最后确认于
2025/11/05 00:46
4 个月前
查看原帖
我代码只WA1,求帮助
CPP
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll N=6e5;
struct node{
	ll a,b,c;
}s[N];
ll t,n,m,k,x,y,z;
bool cmp(node x,node y){
	if(max(x.b,x.c)==max(y.b,y.c))return x.a<y.a;
	return max(x.b,x.c)>max(y.b,y.c);
}
void solve(){
	cin>>n;x=y=z=k=0;
	for(int i=1;i<=n;i++){
		cin>>s[i].a>>s[i].b>>s[i].c;
		s[i].b-=s[i].a;s[i].c-=s[i].a;k+=s[i].a;
	}
	sort(s+1,s+n+1,cmp);
	for(int i=1;i<=n;i++){
		if(s[i].b<0 && s[i].c<0 && i>n/2)break;
		if(x==n/2){
			while(s[i].c>0){
				k+=s[i].c;
				i++;
			}
			break;
		}
		if(y==n/2){
			while(s[i].b>0){
				k+=s[i].b;
				i++;
			}
			break;
		}
		if(s[i].b>s[i].c){
			x++;k+=s[i].b;
		}
		else if(s[i].b<s[i].c){
			y++;k+=s[i].c;
		}
		else k+=s[i].b;
	}
	cout<<k<<endl;
	return;
}
int main(){
	cin>>t;
	while(t--)solve();
	return 0;
}

回复

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

正在加载回复...