比赛 国庆欢乐赛3 评测结果 ATTTT
题目名称 不重叠正方形 最终得分 20
用户昵称 李奇文 运行时间 7.999 s
代码语言 C++ 内存使用 15.72 MiB
提交时间 2025-10-05 11:13:38
显示代码纯文本
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,ans;
int a[1005][1005],s[1005][1005];
signed main(){
    freopen("zfx.in","r",stdin);
    freopen("zfx.out","w",stdout); 
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            cin>>a[i][j];
            s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+a[i][j];
        }
    }
    for(int i=m;i<=n;i++){
    for(int j=m;j<=n;j++){
    for(int a=m;a<=n;a++){
    for(int b=m;b<=n;b++){
    for(int x=m;x<=n;x++){
    for(int y=m;y<=n;y++){
        if((i==a&&j==b)||(i==x&&j==y)||(x==a&&y==b)) continue;
        if((y<=j&&x<=i&&i-m+1<=x&&j-m+1<=y)||(x-m+1<=i&&y-m+1<=j&&i<=x&&j<=y)||(b<=y&&a<=x&&x-m+1<=a&&y-m+1<=b)||(a-m+1<=x&&b-m+1<=y&&x<=a&&y<=b)||(j<=b&&i<=a&&a-m+1<=i&&b-m+1<=j)||(b<=j&&a<=i&&i-m+1<=a&&j-m+1<=b)){
            continue;
        }
        if((y<=j&&x-m+1<=i&&i-m+1<=x-m+1&&j-m+1<=y)||(x-m+1<=i-m+1&&y-m+1<=j&&i-m+1<=x&&j<=y)||(b<=y&&a-m+1<=x&&x-m+1<=a-m+1&&y-m+1<=b)||(a-m+1<=x-m+1&&b-m+1<=y&&x-m+1<=a&&y<=b)||(j<=b&&i-m+1<=a-m+1&&a<=i-m+1&&b-m+1<=j)||(b<=j&&a-m+1<=i&&i-m+1<=a-m+1&&j-m+1<=b)){
            continue;
        }
        if((y-m+1<=j&&x<=i&&i-m+1<=x&&j-m+1<=y-m+1)||(x-m+1<=i&&y-m+1<=j-m+1&&i<=x&&j-m+1<=y)||(b-m+1<=y&&a<=x&&x-m+1<=a&&y-m+1<=b-m+1)||(a-m+1<=x&&b-m+1<=y-m+1&&x<=a&&y-m+1<=b)||(j-m+1<=b&&i<=a&&a-m+1<=i&&b-m+1<=j-m+1)||(b-m+1<=j&&a<=i&&i-m+1<=a&&j-m+1<=b-m+1)){
            continue;
        }
        if((y-m+1<=j&&x-m+1<=i&&i-m+1<=x-m+1&&j-m+1<=y-m+1)||(x-m+1<=i-m+1&&y-m+1<=j-m+1&&i-m+1<=x&&j-m+1<=y)||(b-m+1<=y&&a-m+1<=x&&x-m+1<=a-m+1&&y-m+1<=b-m+1)||(a-m+1<=x-m+1&&b-m+1<=y-m+1&&x-m+1<=a&&y-m+1<=b)||(j-m+1<=b&&i-m+1<=a&&a-m+1<=i-m+1&&b-m+1<=j-m+1)||(b-m+1<=j&&a-m+1<=i&&i-m+1<=a-m+1&&j-m+1<=b-m+1)){
            continue;
        }
        ans=max(ans,s[i][j]-s[i-m][j]-s[i][j-m]+s[i-m][j-m]+s[a][b]-s[a-m][b]-s[a][b-m]+s[a-m][b-m]+s[x][y]-s[x][y-m]-s[x-m][y]+s[x-m][y-m]);
    }
    }
    }
    }
    }
    }
    cout<<ans<<"\n";
    return 0;
}