比赛 20191022轻松模拟测试 评测结果 AAAAAAAAAA
题目名称 Rotate Columns 最终得分 100
用户昵称 HYOI_ingn 运行时间 1.635 s
代码语言 C++ 内存使用 13.71 MiB
提交时间 2019-10-22 19:24:47
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
const int maxn=1010;
int read(){
    int x=0,w=1;char ch=getchar();
    while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
    while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
    return x*w;
}
int t,n,m;
int a[10][1000],mov[100];
int to[maxn],ans;
struct node{
    int id,val;
}jp[500];
void check(){
    int chk[5];memset(chk,0,sizeof(chk));
    for(int i=1;i<=n;i++){
        for(int j=1;j<=min(7,m);j++){
            chk[(i+mov[j])%n]=max(chk[(i+mov[j])%n],a[i][jp[j].id]);
        }
    }
    int tmp=0;
    for(int i=0;i<n;i++)tmp+=chk[i];ans=max(ans,tmp);
}
void dfs(int now){
    if(now>7||now>m){
        check();return;
    }
    for(int i=0;i<n;i++){
        mov[now]=i;dfs(now+1);
    }
}
bool cmp(node a,node b){
    return a.val>b.val;
}
int main(){
    freopen("happygameT1.in","r",stdin);
    freopen("happygameT1.out","w",stdout);
    t=read();
    while(t--){
        n=read(),m=read();
        memset(mov,0,sizeof(mov));
        memset(jp,0,sizeof(jp));
        ans=0;
        int cnt=0;
        for(int i=1;i<=n;i++){
            for(int j=1;j<=m;j++){
                a[i][j]=read();
                jp[j].val=max(jp[j].val,a[i][j]);
                jp[j].id=j;
            }
        }
        sort(jp+1,jp+m+1,cmp);
        dfs(1);
        cout<<ans<<"\n";
    }
}