10827

O^3的死活写不对,不知道为什么,算了一下发现O^4也不会超时,就改成O^4的了,不过这个比那个应该要慢得多
//============================================================================
// Name        : 10827.cpp
// Author      : 
// Version     :
// Copyright   : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;

int in[200][200], a[200][200], d[200][200];
int t, N, n, ans, tag;

int main() {
	freopen("a.txt", "r", stdin);
	scanf("%d", &N);
	while(N--){
		memset(in, 0, sizeof(in));
		memset(a, 0, sizeof(a));
		memset(d, 0, sizeof(d));
		scanf("%d", &n);
		tag = 0;
		for(int i = 1;i <= n;i++){
			for(int j = 1;j <= n;j++){
				scanf("%d", &in[i][j]);
				if(in[i][j] >= 0) tag = 1;
				in[i][j+n] = in[i][j];
				in[i+n][j] = in[i][j];
				in[i+n][j+n] = in[i][j];
			}
		}
		if(tag == 0){
			ans = in[1][1];
			for(int i = 1;i <= n;i++){
				for(int j = 1;j <= n;j++){
					if(ans < in[i][j])
						ans = in[i][j];
				}
			}
			printf("%d\n", ans);
			continue;
		}
		for(int i = 1;i <= 2*n;i++){
			for(int j = 1;j <= 2*n;j++){
				a[i][j] = a[i][j-1]+in[i][j];
				d[i][j] = d[i-1][j]+a[i][j];
			}
		}
		ans = d[1][1];
		for(int i = 1;i <= n;i++){
			for(int j = 1;j <= n;j++){
				for(int k = 1;k <= n;k++){
					for(int g = 1;g <= n;g++){
						t = d[i+k-1][j+g-1]+d[i-1][j-1]-d[i+k-1][j-1]-d[i-1][j+g-1];
						if(ans < t)
							ans = t;
					}
				}
			}
		}
//		for(int i = 1;i <= 2*n;i++){
//			for(int j = 1;j <= 2*n;j++){
//				b[i][j] = b[i-1][j]+in[i][j];
//			}
//		}
//		ans = 0;
//		for(int i = 1;i <= n;i++){
//			for(int j = 1;j <= n;j++){
//				t = 0;
//				for(int k = 1;k <= n;k++){
//					t += (a[k][i+j-1]-a[k][i-1]);
//					if(t < 0) t = 0;
//					else{
//						if(ans < t)
//							ans = t;
//					}
//				}
//				t = 0;
//				for(int k = 1;k <= n;k++){
//					t += (b[i+j-1][k]-b[i-1][k]);
//					if(t < 0) t = 0;
//					else{
//						if(ans < t)
//							ans = t;
//					}
//				}
//			}
//		}
		printf("%d\n", ans);
	}
	return 0;
}
posted @ 2011-06-01 00:35  KOKO's  阅读(201)  评论(0编辑  收藏  举报