求调
查看原帖
求调
678881
Vocaloid世末歌者楼主2024/3/31 16:03

此代码 A 了其双倍经验。

#include<stdio.h>
#include<bits/stdc++.h>
#define MOD 998244353
#define esp 1e-8
#define INF 99999999999999
#define LL long long
#define rep(i,a,b,g) for(LL i=a;i<=b;i+=g)
#define rem(i,a,b,g) for(LL i=a;i>=b;i-=g)
#define repn(i,a,b,g) for(LL i=a;i<b;i+=g)
#define remn(i,a,b,g) for(LL i=a;i>b;i-=g)
#define pll pair<LL,LL>
#define mkp(x,y) make_pair(x,y)
#define i128 __int128
#define lowbit(x) ((x)&(-(x)))
#define lc (u<<1)
#define rc (u<<1|1)
using namespace std;
LL n,m,k;
LL s[1510][1510],K[1510][1510],ne[1510][1510],se[1510][1510],sw[1510][1510],nw[1510][1510],hang[1510][1510],lie[1510][1510];
LL mc=-INF;
int main()
{
	cin>>n>>k;
    m=n;
    rep(i,1,n,1)
	{
        rep(j,1,m,1)
		{
            LL x;
            cin>>x;
            s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+x;
        }
    }
    rep(i,k,n,1)
	{
        rep(j,k,m,1)
		{
            K[i][j]=s[i][j]-s[i-k][j]-s[i][j-k]+s[i-k][j-k];
        }
    }
    rep(i,k,n,1)
	{
        rep(j,k,m,1)
		{
            nw[i][j]=max(nw[i-1][j],max(nw[i][j-1],K[i][j]));
        }
    }
	rem(i,n-k+1,1,1)
	{
        rep(j,k,m,1)
		{
            sw[i][j]=max(sw[i+1][j],max(sw[i][j-1],K[i+k-1][j]));
        }
    }
	rem(i,n-k+1,1,1)
	{
		rem(j,m-k+1,1,1)
		{
            se[i][j]=max(se[i+1][j],max(se[i][j+1],K[i+k-1][j+k-1]));
        }
    }
    rep(i,k,n,1)
	{
        rem(j,m-k+1,1,1)
	    {
            ne[i][j]=max(ne[i-1][j],max(ne[i][j+1],K[i][j+k-1]));
        }
    }
	rep(i,1,n-k+1,1)
	{
        rep(j,k,m,1)
		{
            hang[i][i+k-1]=max(hang[i][i+k-1],K[i+k-1][j]);
        }
    }
    rep(t,k+1,n,1)
	{
        rep(i,1,n-t+1,1)
		{
            hang[i][i+t-1]=max(hang[i+1][i+t-1],hang[i][i+t-2]);
        }
    }
	rep(j,1,m-k+1,1)
	{
        rep(i,k,n,1)
		{
            lie[j][j+k-1]=max(lie[j][j+k-1],K[i][j+k-1]);
        }
    }
    rep(t,k+1,m,1)
	{
		rep(j,1,m-t+1,1)
		{
            lie[j][j+t-1]=max(lie[j+1][j+t-1],lie[j][j+t-2]);
        }
    }
	rep(a,k,n-k,1)
	{
		rep(b,k,m-k,1)
		{
	        mc=max(mc,lie[1][b]+ne[a][b+1]+se[a+1][b+1]);
			mc=max(mc,lie[b+1][m]+nw[a][b]+sw[a+1][b]);
			mc=max(mc,hang[a+1][n]+nw[a][b]+ne[a][b+1]);
			mc=max(mc,hang[1][a]+sw[a+1][b]+se[a][b+1]);
		}
    }
	rep(a,k,n-2*k,1)
	{
		rep(b,a+k,n-k,1)
		{
            mc=max(mc,hang[1][a]+hang[a+1][b]+hang[b+1][n]);
        }
    }
	rep(a,k,m-2*k,1)
	{
        rep(b,a+k,m-k,1)
		{
            mc=max(mc,lie[1][a]+lie[a+1][b]+lie[b+1][n]);
        }
    }
    cout<<mc<<endl;
    return 0;
} 

WA on 00_sample_00.txt,01_random_31.txt,01_random_30.txt

2024/3/31 16:03
加载中...