20pts求助
  • 板块P2363 马农
  • 楼主Graph
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/1/6 10:27
  • 上次更新2024/1/6 13:34:25
查看原帖
20pts求助
616996
Graph楼主2024/1/6 10:27

rt

#include<bits/stdc++.h>
using namespace std;
#define int long long

const int N=55;
int n,sum[N][N],ans;
map<int,int>mp;

int getsum(int X,int Y,int x,int y)
{
	return sum[X][Y]-sum[X][y-1]-sum[x-1][Y]+sum[x-1][y-1];
}

signed main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
		{
			cin>>sum[i][j];
			sum[i][j]+=sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1];
		}
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
		{
			mp.clear();
			for(int x=1;x<=i;x++)
				for(int y=1;y<=j;y++)
					mp[getsum(i,j,x,y)]++;
			for(int x=i+1;x<=n;x++)
				for(int y=j+1;y<=n;y++)
					ans+=mp[getsum(x,y,i+1,j+1)];
		}
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
		{
			mp.clear();
			for(int x=1;x<=i;x++)
				for(int y=j+1;y<=n;y++)
					mp[getsum(i,y,x,j+1)]++;
			for(int x=i+1;x<=n;x++)
				for(int y=1;y<=i;y++)
					ans+=mp[getsum(x,j,i+1,y)];
		}
	cout<<ans;
	return 0;
}
2024/1/6 10:27
加载中...