CodeForces-Three Activities

题目

做题思路

我一开始错误的使用了结构体存某一天三个活动,导致做起来很麻烦,后面分开了三个数组,但是我从开始就没想到其实只要枚举9次,最多这种情况,所以用什么存都没问题,做题还是不会动脑子,没有想到最差情况,至于从大到小排序这肯定知道的。太笨了,可能跟昨天太困了有关,昨天做这道题太困了思路乱了吧。

题外话

过几天放假了,嗯,下个学期要住外面了 QAQ,28号晚上要熬夜打CF!
加油!

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
struct node{
	int id,crowd;
}a[100005],b[100005],c[100005];
bool cmp(node a,node b)
{
	return a.crowd>b.crowd;
}
int n;
int t;
int ans;
void solve()
{
	cin>>n;
	for(int i=1;i<=n;i++){cin>>a[i].crowd;a[i].id=i;}
	for(int i=1;i<=n;i++){cin>>b[i].crowd,b[i].id=i;}
	for(int i=1;i<=n;i++){cin>>c[i].crowd,c[i].id=i;}
	sort(a+1,a+1+n,cmp);	sort(b+1,b+1+n,cmp);
  	sort(c+1,c+1+n,cmp);
	for(int i=1;i<=3;i++)
	{
		for(int j=1;j<=3;j++)
		{
			
			for(int h=1;h<=3;h++)
			{
				if(a[i].id!=c[h].id&&b[j].id!=c[h].id&&a[i].id!=b[j].id)
				{
					ans=max(ans,a[i].crowd+b[j].crowd+c[h].crowd);
				}
				else continue;
			}
		}
	}
	cout<<ans<<endl;
	memset(a,0,sizeof a);
	memset(b,0,sizeof b);
	memset(c,0,sizeof c);
	ans=0;
	return ;
}
int main()
{cin>>t;
	while(t--)
	{
		solve();
	}
	
	
	
	
	
	return 0;
}
posted @ 2025-04-16 20:29  LteShuai  阅读(5)  评论(0)    收藏  举报