比赛 20191022轻松模拟测试 评测结果 AEAAAAAAAA
题目名称 Rotate Columns 最终得分 90
用户昵称 欧鹰123 运行时间 0.063 s
代码语言 C++ 内存使用 12.88 MiB
提交时间 2019-10-22 17:24:40
显示代码纯文本
#include<bits/stdc++.h>

using namespace std;

int t,n,m;

struct node{
	int w,x,y;
}a[10050];

bool cmp(node a,node b)
{
	return a.w>b.w;
}

bool check(int x,int y,int xx,int yy)
{
	if(a[x].y==a[y].y&&a[xx].y==a[yy].y&&abs(a[x].x-a[y].x)==2&&(abs(a[xx].x-a[yy].x)==1||abs(a[xx].x-a[yy].x==3))) return true;
	
	if(a[x].y==a[y].y&&a[xx].y==a[yy].y&&abs(a[xx].x-a[yy].x)==2&&(abs(a[x].x-a[y].x)==1||abs(a[x].x-a[y].x==3))) return true;
	
	if(a[x].y==a[xx].y&&a[y].y==a[yy].y&&abs(a[x].x-a[xx].x)==2&&(abs(a[y].x-a[yy].x)==1||abs(a[y].x-a[yy].x==3))) return true;
	
	if(a[x].y==a[xx].y&&a[y].y==a[yy].y&&abs(a[yy].x-a[y].x)==2&&(abs(a[xx].x-a[x].x)==1||abs(a[xx].x-a[x].x==3))) return true;
	
	if(a[x].y==a[yy].y&&a[xx].y==a[y].y&&abs(a[x].x-a[yy].x)==2&&(abs(a[xx].x-a[y].x)==1||abs(a[xx].x-a[y].x==3))) return true;
	
	if(a[x].y==a[yy].y&&a[xx].y==a[y].y&&abs(a[xx].x-a[y].x)==2&&(abs(a[x].x-a[yy].x)==1||abs(a[x].x-a[yy].x==3))) return true;
	
	return false;
}

int main()
{
	freopen("happygameT1.in","r",stdin);
	
	freopen("happygameT1.out","w",stdout);
	
	cin>>t;
	
	while(t--)
	{
		int ans=0;
		
		for(int i=1;i<=1000;i++) a[i].w=a[i].x=a[i].y=0;
		
		cin>>n>>m;
		
		for(int i=1;i<=n;i++)
		{
			for(int j=1;j<=m;j++)
			{
				cin>>a[(i-1)*m+j].w;
				
				a[(i-1)*m+j].x=i;
				
				a[(i-1)*m+j].y=j;
			}
		}
		
		sort(a+1,a+1+n*m,cmp);
		
		if(n==4&&check(1,2,3,4))
		{
			if(check(1,2,3,5)) cout<<a[1].w+a[2].w+max(a[3].w+a[6].w,a[4].w+a[5].w)<<'\n';
			
			else cout<<a[1].w+a[2].w+a[3].w+a[5].w<<'\n';
		}
		
		else
		{
			for(int i=1;i<=n;i++) ans+=a[i].w;
			
			cout<<ans<<'\n';
		}
	}
	
	return 0;
}