求助:
查看原帖
求助:
795623
_register_new_楼主2023/2/24 18:46
#include<iostream>
#include<cstdio>
#include<map>
using namespace std;
long long sum[55][55],a[55][55],n,ans;
int d[6000000]; 
int bais=2500000;
int main()
{
	scanf("%lld",&n);
	for(int i=1; i<=n; i++)
		for(int j=1; j<=n; j++){
			scanf("%lld",&a[i][j]);
			sum[i][j]=sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1]+a[i][j];	
	}
	for(int i=1; i<=n; i++)
		for(int j=1; j<=n; j++){
			for(int x=1; x<=i; x++)
				for(int y=1; y<=j; y++)
					d[sum[i][j]-sum[i][y-1]-sum[x-1][j]+sum[x-1][y-1]+bais]++;
					
			for(int x=i+1; x<=n; x++)
				for(int y=j+1; y<=n; y++)
					ans+=d[sum[x][y]-sum[x][j]-sum[i][y]+sum[i][j]+bais];

			for(int x=1; x<=i; x++)
				for(int y=1; y<=j; y++)
					d[sum[i][j]-sum[i][y-1]-sum[x-1][j]+sum[x-1][y-1]+bais]=0;
			
			for(int x=1; x<=i; x++)
				for(int y=j+1; y<=n; y++)
					d[sum[i][y]-sum[x-1][y]-sum[i][j]+sum[x-1][j]+bais]++;
	
			for(int x=i+1; x<=n; x++)
				for(int y=1; y<=j; y++)
					ans+=d[sum[x][j]-sum[i][j]-sum[x][y-1]+sum[i][y-1]+bais];
			
			for(int x=1; x<=i; x++)
				for(int y=j+1; y<=n; y++)	
					d[sum[i][y]-sum[x-1][y]-sum[i][j]+sum[x-1][j]+bais]=0;
		}
	printf("%lld",ans);
	return 0;
}

这是我老师的代码,请问bais是什么意思?

2023/2/24 18:46
加载中...