比赛 20191022轻松模拟测试 评测结果 AAAAATTTTT
题目名称 Rotate Columns 最终得分 50
用户昵称 jekyll 运行时间 5.060 s
代码语言 C++ 内存使用 13.67 MiB
提交时间 2019-10-22 19:32:11
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;

const int maxn=105;

inline int read(){
	register int x=0,w=1,ch=getchar();
	for(;ch<'0'||ch>'9';ch=getchar())if(ch=='-')w=-1;
	for(;ch>='0'&&ch<='9';ch=getchar())x=x*10+ch-48;
	return w*x;
}

int n,m,ans;
int a[15][maxn],mx[maxn],id[maxn];
int mov[maxn];

inline bool cmp(const int &a,const int &b){
	return mx[a]>mx[b];
}

inline void chkmx(){
	int now[4]={0,0,0,0};
	for(int j=1;j<=min(m,4);j++)
		for(int i=0;i<n;i++)
			now[(i+mov[j])%n]=max(now[(i+mov[j])%n],a[i][id[j]]);
	int res=0;
	for(int i=0;i<n;i++)res+=now[i];
	ans=max(ans,res);
}

void dfs(int now){
	if(now>4||now>m){
		chkmx();return ;
	}
	for(int i=0;i<n;i++){
		mov[now]=i;dfs(now+1);
	}
}

int main(){
	freopen("happygameT1.in","r",stdin);
	freopen("happygameT1.out","w",stdout);
	for(int T=read();T--;){
		n=read(),m=read();
		memset(mx,0,sizeof mx);
		for(int i=0;i<n;i++)
			for(int j=1;j<=m;j++)a[i][j]=read(),mx[j]=max(mx[j],a[i][j]);
		for(int i=1;i<=m;i++)id[i]=i;
		sort(id+1,id+1+m,cmp);
		ans=0;
		dfs(1);
		cout<<ans<<'\n';
	}
}
/*
1
4 2
8 7
5 1
2 6
4 3
*/