cbx8888 @ 2016-01-26 16:01:13
测试点 #1:通过该测试点。 得分10,耗时31ms,内存27136kB。
测试点 #2:通过该测试点。 得分10,耗时46ms,内存27553kB。
测试点 #3:通过该测试点。 得分10,耗时15ms,内存28028kB。
测试点 #4:错误的答案。 得分0,耗时78ms,内存33243kB。
该行正确答案长度:1 你的答案长度:1
你是在整个测试点输出的 0% 地方开始出错的。
这一行你是在第 1 个字符开始与标准输出不同的。
测试点 #5:通过该测试点。 得分10,耗时124ms,内存34852kB。
测试点 #6:通过该测试点。 得分10,耗时249ms,内存43364kB。
测试点 #7:通过该测试点。 得分10,耗时468ms,内存59592kB。
测试点 #8:通过该测试点。 得分10,耗时31ms,内存27156kB。
测试点 #9:通过该测试点。 得分10,耗时889ms,内存67297kB。
测试点 #10:通过该测试点。 得分10,耗时1435ms,内存77332kB。
#include<stdio.h>
#include<cstring>
#include<algorithm>
#define F f[i][j]
using namespace std;
int i,j,k,ans,n,m;
int a[2505][2505],f[2505][2505],sum[2505][2505];
int main()
{
scanf("%d %d",&n,&m);
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
scanf("%d",&a[i][j]);
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
sum[i][j]=sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1]+a[i][j];
ans=0;
memset(f,0,sizeof(f));
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
if(a[i][j]==0) continue;
f[i][j]=f[i-1][j-1]+1;
if(sum[i][j]-sum[i-F][j]-sum[i][j-F]+sum[i-F][j-F]!=F) F=1;
ans=max(F,ans);
}
memset(f,0,sizeof(f));
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
if(a[i][j]==0) continue;
F=f[i-1][j+1]+1;
if(sum[i][j+F-1]-sum[i-F][j+F-1]-sum[i][j-1]+sum[i-F][j-1]!=F) F=1;
ans=max(F,ans);
}
printf("%d\n",ans);
return 0;
}
求第四个点数据
by fltflt1 @ 2016-01-26 21:37:43
@cnx8888我知道哪里错了明天说
by Rieman_sum @ 2023-07-31 15:29:45
6