比赛 |
20191022轻松模拟测试 |
评测结果 |
AAAAAAAAAA |
题目名称 |
Rotate Columns |
最终得分 |
100 |
用户昵称 |
梦那边的美好ET |
运行时间 |
0.056 s |
代码语言 |
C++ |
内存使用 |
13.89 MiB |
提交时间 |
2019-10-23 19:10:38 |
显示代码纯文本
#include<bits/stdc++.h>
#define maxn 100010
using namespace std;
int t,n,sum,m,d[20][20],fz[20][20],add[20],ans,z[20][3010];
void dfs(int p){
if(p==n+1){
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
fz[i][(j+add[i]-1)%n+1]=d[i][j];
int sum=0,ma;
for(int j=1;j<=n;j++){
ma=0;
for(int i=1;i<=n;i++)ma=max(ma,fz[i][j]);
sum+=ma;
}ans=max(ans,sum);
return;
}
for(int i=0;i<=n-1;i++)add[p]=i,dfs(p+1);
return;
}
int main(){
freopen("happygameT1.in","r",stdin);
freopen("happygameT1.out","w",stdout);
scanf("%d",&t);
while(t--){
scanf("%d%d",&n,&m);
sum=ans=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
scanf("%d",&z[i][j]);
for(int k=1;k<=n;k++){
int ma=0,zhi,a1;
for(int j=1;j<=m;j++){
a1=0;
for(int k=1;k<=n;k++)a1=max(a1,z[k][j]);
if(a1>ma)ma=a1,zhi=j;
}
for(int j=1;j<=n;j++)d[k][j]=z[j][zhi],z[j][zhi]=-1;
}
dfs(1);
printf("%d\n",ans);
}
return 0;
}