社区讨论

问:这是怎么死的

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

讨论操作

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

当前回复
4 条
当前快照
1 份
快照标识符
@mi449fq6
此快照首次捕获于
2025/11/18 13:11
4 个月前
此快照最后确认于
2025/11/18 23:51
4 个月前
查看原帖
考场上想到贪心了打完代码样例也过了然鹅并没有AC
求大佬解惑
CPP
#include<bits/stdc++.h>
using namespace std;
int t; 
int main(){
	cin>>t;
	while(t--){
		short a[100010]={0},b[100010]={0},c[100010]={0},v[100010][3]={0};
		int n,s=0;
		cin>>n;
		for(int i=1;i<=n;i++){
			cin>>v[i][0]>>v[i][1]>>v[i][2];
			if(v[i][0]>=v[i][1]&&v[i][0]>=v[i][2])a[0]++,a[a[0]]=min(v[i][0]-v[i][1],v[i][0]-v[i][2]),s+=v[i][0];
			else if(v[i][1]>=v[i][0]&&v[i][1]>=v[i][2])b[0]++,b[b[0]]=min(v[i][1]-v[i][0],v[i][1]-v[i][2]),s+=v[i][1];
			else c[0]++,c[c[0]]=min(v[i][2]-v[i][1],v[i][2]-v[i][0]),s+=v[i][2];
		}
		if(n/2>=a[0]&&n/2>=b[0]&&n/2>=c[0]){
			cout<<s<<endl;
			continue;
		}
		if(n/2<a[0]){
			sort(a+1,a+1+a[0]);
			for(int i=1;i<=a[0]-n/2;i++)s-=a[i];
			cout<<s<<endl;
			continue;
		}
		if(n/2<b[0]){
			sort(b+1,b+1+b[0]);
			for(int i=1;i<=b[0]-n/2;i++)s-=b[i];
			cout<<s<<endl;
			continue;
		}
		if(n/2<c[0]){
			sort(c+1,c+1+c[0]);
			for(int i=1;i<=c[0]-n/2;i++)s-=c[i];
			cout<<s<<endl;
			continue;
		}
	}
	return 0;
}

回复

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

正在加载回复...