求助P2213,20pts
  • 板块灌水区
  • 楼主zhz_2013
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/8/19 15:41
  • 上次更新2024/8/19 17:37:40
查看原帖
求助P2213,20pts
980236
zhz_2013楼主2024/8/19 15:41
#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,k;
signed main(){
//	freopen("P2213_2.in","r",stdin);
	cin>>n>>k;
	int g[n+1][n+1]={0};
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cin>>g[i][j];
		}
	}
	int ans=0;
	if(n&1){
		int bz=n/2+1;
		for(int i=1;i<=n;i++){
			for(int j=1;j<=n;j++){
				if(abs(i-bz)+abs(j-bz)<=k)ans+=g[i][j];
			}
		}
	}else{
		int bzx[3]={n/2-1,n/2,n/2+1},bzy[3]={n/2-1,n/2,n/2+1},ans1=0;
		for(int i=0;i<3;i++){
			for(int j=0;j<3;j++){
				int mbzx=bzx[i],mbzy=bzy[j];
				for(int k1=1;k1<=n;k1++){
					for(int l=1;l<=n;l++){
						if(abs(k1-mbzx)+abs(l-mbzy)<=k){
							ans1+=g[k1][l];
						}
					}
				}
				ans=max(ans,ans1);
//				cout<<"chose "<<mbzx<<" and "<<mbzy<<", ans is"<<ans1<<endl;
				ans1=0;
			}
		}
	}
	cout<<ans<<endl;
	return 0;
}

2024/8/19 15:41
加载中...