数据范围???

P2363 马农

Lacer @ 2019-02-26 17:13:24

和某一篇题解撞脸请忽视 一开始N定义为55 直接RE一大片 后来学题解改成了2010就A了 求解

#include<cstdio>
#include<cstring>
#define N 2010
int s[N][N],d[11111111];
int main()
{
    int n,i,j,x,y;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++){
            scanf("%d",&s[i][j]);
            s[i][j]+=s[i-1][j]+s[i][j-1]-s[i-1][j-1];
        }
    int ans=0;
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++){
            for(x=1;x<=i;x++)
                for(y=1;y<=j;y++)
                    d[s[i][j]-s[x-1][j]-s[i][y-1]+s[x-1][y-1]]++;
            for(x=i+1;x<=n;x++)
                for(y=j+1;y<=n;y++)
                    ans+=d[s[x][y]-s[x][j]-s[i][y]+s[i][j]];
            for(int x=1;x<=i;x++)
                for(int y=1;y<=j;y++)
                    d[s[i][j]-s[i][y-1]-s[x-1][j]+s[x-1][y-1]]=0;
            for(x=1;x<=i;x++)
                for(y=j+1;y<=n;y++)
                    d[s[i][y]-s[x-1][y]-s[i][j]+s[x-1][j]]++;
            for(x=i+1;x<=n;x++)
                for(y=1;y<=j;y++)
                    ans+=d[s[x][j]-s[x][y-1]-s[i][j]+s[i][y-1]];
            for(int x=1;x<=i;x++)
                for(int y=j+1;y<=n;y++)
                    d[s[i][y]-s[x-1][y]-s[i][j]+s[x-1][j]]=0;
        }
    printf("%d",ans);
    return 0;
}
//long long

by t162 @ 2019-02-26 17:18:10

这还叫撞脸吗,这简直一模一样


by Lacer @ 2019-02-26 17:21:43

@Bambusoideae 用这个思路只能打成这个风了。。。


by YingLi @ 2019-10-23 19:15:14

我N开100,也是RE……开1e3就能过。好迷啊


by shyyhs @ 2020-08-14 14:15:06

因为数据范围太小把N^6的都放过去了,结果它改了数据范围,没改题面


|