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;
}

浙公网安备 33010602011771号