哪位dalao帮忙看看为什么WA两个点80分
查看原帖
哪位dalao帮忙看看为什么WA两个点80分
519384
Link_Cut_Y楼主2021/8/15 22:02
#include<bits/stdc++.h>
#define int long long
#define reint register int
#define forr(i,a,b) for(reint i=(a);i<=(b);i++)
using namespace std;

const int N=60;
int a[N][N];
int f[N][N][N][N];

inline int max(int i,int j,int qwq,int qaq)
{
	return max(f[i-1][j][qwq][qaq-1],max(f[i-1][j][qwq-1][qaq],max(f[i][j-1][qwq-1][qaq],f[i][j-1][qwq][qaq-1])));
}

bool digit(char x)
{
    return (x>='0' && x<='9');
}
inline int read()
{
	int x=0;
	int f=1;
	char ch=getchar();
	while(!digit(ch))
	{
		if(ch=='-')
		{
			f=-1;
		}
		ch=getchar();
	}
	while(digit(ch))
	{
		x=(x<<1)+(x<<3)+ch-'0';
		ch=getchar();
	}
	return x*f;
}

inline void write(int x)
{
    if(x<0)
	{
        putchar('-');
        x=-x;
    }
    if(x>9)
        write(x/10);
    putchar(x%10+'0');
    return;
}

signed main()
{
	int n,m;
	n=read();
	m=read();
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			a[i][j]=read();
		}
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			for(int qwq=1;qwq<=n;qwq++)
			{
				for(int qaq=1;qaq<=n;qaq++)
				{
					f[i][j][qwq][qaq]=max(i,j,qwq,qaq)+a[i][j];
					if(i!=qwq || j!=qaq)
					{
						f[i][j][qwq][qaq]+=a[qwq][qaq];
					}
				}
			}
		}
	}
	write(f[n][n][n][n]);
	return 0;
}
2021/8/15 22:02
加载中...