10pts悬关求助
  • 板块P2363 马农
  • 楼主WsW_花逝爆零人
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/8/1 23:52
  • 上次更新2024/8/2 09:38:59
查看原帖
10pts悬关求助
349824
WsW_花逝爆零人楼主2024/8/1 23:52
#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int> pii;
typedef long long ll;
typedef unsigned long long ull;
int n;
map<ll,int>cnt;
ll mp[55][55];
ll ans;

ll query(int lx,int ly,int rx,int ry){
	return mp[rx][ry]-mp[lx-1][ry]-mp[rx][ly-1]+mp[lx-1][ly-1];
}

int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
	cin>>n;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cin>>mp[i][j];
			mp[i][j]+=mp[i][j-1]+mp[i-1][j]-mp[i-1][j-1];
		}
	}
	for(int i=1;i<n;i++){
		for(int j=1;j<n;j++){
			for(int lx=1;lx<=i;lx++){
				for(int ly=1;ly<=i;ly++){
					cnt[query(lx,ly,i,j)]++;
				}
			}
			for(int rx=i+1;rx<=n;rx++){
				for(int ry=j+1;ry<=n;ry++){
					ans+=cnt[query(i+1,j+1,rx,ry)];
				}
			}
			cnt.clear();
			for(int lx=1;lx<=i;lx++){
				for(int ry=j+1;ry<=n;ry++){
					cnt[query(lx,j+1,i,ry)]++;
				}
			}
			for(int rx=i+1;rx<=n;rx++){
				for(int ly=1;ly<=i;ly++){
					ans+=cnt[query(i+1,ly,rx,j)];
				}
			}
			cnt.clear();
		}
	}
	cout<<ans;
	return 0;
}
2024/8/1 23:52
加载中...