社区讨论

啊?

学术版参与者 3已保存回复 6

讨论操作

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

当前回复
6 条
当前快照
1 份
快照标识符
@mhpi28xe
此快照首次捕获于
2025/11/08 07:41
3 个月前
此快照最后确认于
2025/11/08 07:41
3 个月前
查看原帖
S组T1爆零了
本以为是freopen的问题,结果并不是
注释后交到洛谷测评,14TLE 6RE
本地测试样例全过
全机房的人都尽力了,玄关
CPP
#include<bits/stdc++.h>
#define ll long long
#define N (int)1e5+5
using namespace std;
ll m,n;
struct node{
	ll x[4];
	int fstv(){
		int ret=1;
		for(int i=1;i<=3;i++){
			if(x[i]>x[ret]){
				ret=i;
			}
		}
		return ret;
	}
	int scdv(){
		int mx=1,mn=1;
		for(int i=1;i<=3;i++){
			if(x[i]>x[mx]){
				mx=i;
			}
			if(x[i]<x[mn]){
				mn=i;
			}
		}
		if(mx==mn)return 1;
		return 6-mx-mn;
	}
	int cost(){
		return x[fstv()]-x[scdv()];
	}
};
node a[N];
struct pers{
	int x;
	pers(int _x):x(_x){};
	bool operator <(const pers &_t)const{
		return a[x].cost()>a[_t.x].cost();
	}
};

void solve(){
	priority_queue<pers>q[3];
	cin>>n;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=3;j++){
			cin>>a[i].x[j];
		}
		q[a[i].fstv()].push(pers(i));
	}
	for(int i=1;i<=3;i++){
		while(q[i].size()>n/2){
			int x=q[i].top().x;
			q[i].pop();
			q[a[x].scdv()].push(pers(x));
		}
	}
	ll ans=0;
	for(int i=1;i<=3;i++){
		while(!q[i].empty()){
			int x=q[i].top().x;
			ans+=a[x].x[i];
			q[i].pop();
		}
	}
	cout<<ans<<'\n';
	return ;
}
int main(){
//	freopen("club.in","r",stdin);
//	freopen("club.out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin>>m;
	while(m--){
		solve();
	}
	return 0;
}

回复

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

正在加载回复...