社区讨论
30pts求调
P14361[CSP-S 2025] 社团招新参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mhiyjyh7
- 此快照首次捕获于
- 2025/11/03 17:48 4 个月前
- 此快照最后确认于
- 2025/11/03 17:48 4 个月前
赛时5个全过了啊
CPP#include<bits/stdc++.h>
using namespace std;
#define int long long
#define max(a,b) (a>b?a:b)
#define min(a,b) (a<b?a:b)
struct st{
int a,b,c;
}str[100005];
bool cmp1(st u,st v){
if(max(u.a,u.b)<max(v.a,v.b))return 1;
else if(max(u.a,u.b)==max(v.a,v.b)&&min(u.a,u.b)<min(v.a,v.b))return 1;
else return 0;
}
bool cmp2(st u,st v){
return u.c>v.c;
}
int x,y,z,tmpi,sum,ans;
signed main(){
int n,_;
cin>>_;
while(_--){
sum=ans=0;
cin>>n;
for(int i=0;i<n;i++){
cin>>x>>y>>z;
str[i].a=x-z;
str[i].b=y-z;
str[i].c=y-x;
sum+=z;
}
sort(str,str+n,cmp1);
int i;
for(i=0;i<n/2&&max(str[i].a,str[i].b)<=0;i++);
sort(str+i,str+n,cmp2);
int tmpi=i+n/2;
for(i;i<tmpi;i++){
if(str[i].c<0&&i>=n/2)break;
ans+=str[i].b;
}
for(i;i<n;i++){
ans+=str[i].a;
}
cout<<sum+ans<<endl;
}
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...