首页 > Web开发 > 详细

关于js报$ is not a function 的问题

时间:2014-01-21 10:19:06      阅读:591      评论:0      收藏:0      [点我收藏+]

Garbage Heap

Time limit: ? seconds
Memory limit: 64 megabytes

Farmer John has a heap of garbage formed in a rectangular parallelepiped.

It consists of bubuko.com,布布扣 garbage pieces each of which has a value. The value of a piece may be 0, if the piece is neither profitable nor harmful, and may be negative which means that the piece is not just unprofitable, but even harmful (for environment).

bubuko.com,布布扣

The farmer thinks that he has too much harmful garbage, so he wants to decrease the heap size, leaving a rectangular nonempty parallelepiped of smaller size cut of the original heap to maximize the sum of the values of the garbage pieces in it. You have to find the optimal parallelepiped value. (Actually, if any smaller parallelepiped has value less than the original one, the farmer will leave the original parallelepiped).

Input

The first line of the input contains the number of the test cases, which is at most 15. The descriptions of the test cases follow. The first line of a test case description contains three integers AB, and C (1 ≤ A, B, C ≤ 20). The next lines contain bubuko.com,布布扣 numbers, which are the values of garbage pieces. Each number does not exceed bubuko.com,布布扣 by absolute value. If we introduce coordinates in the parallelepiped such that the cell in one corner is (1,1,1) and the cell in the opposite corner is (A,B,C), then the values are listed in the order

bubuko.com,布布扣

The test cases are separated by blank lines.

Output

For each test case in the input, output a single integer denoting the maximal value of the new garbage heap. Print a blank line between test cases.

Examples

Input Output
1

2 2 2
-1 2 0 -3 -2 -1 1 5
6

题意:说白了求三维子矩阵最大和。

思路:利用前缀和的思想求出2维每个子矩阵和,剩下就等同于求一维子序列最大和的方法一样了。

代码:

#include <stdio.h>
#include <string.h>
#define max(a, b) (a)>(b)?(a):(b)
#define INF 0x3f3f3f3f3f3f3f
const int N = 25;

int t, A, B, C;
long long g[N][N][N], sum[N][N][N][N], res[N][N][N][N];

void init() {
	scanf("%d%d%d", &A, &B, &C);
	for (int i = 1; i <= A; i++)
		for (int j = 1; j <= B; j++)
			for (int k = 1; k <= C; k++)
				scanf("%lld", &g[i][j][k]);
}

long long solve() {
	long long ans = -INF;
	for (int c = 1; c <= A; c++) {
		for (int i = 1; i <= B; i++) {
			for (int j = i; j <= B; j++) {
				for (int k = 1; k <= C; k++) {
					long long h = 0;
					for (int l = k; l <= C; l++) {
						h += g[c][j][l];
						sum[i][j][k][l] = sum[i][j - 1][k][l] + h;
						if (c == 1) res[i][j][k][l] = sum[i][j][k][l];
						else res[i][j][k][l] = max(sum[i][j][k][l], res[i][j][k][l] + sum[i][j][k][l]);
						ans = max(ans, res[i][j][k][l]);
					}
				}
			}
		}
	}
	return ans;
}

int main() {
	scanf("%d", &t);
	while (t--) {
		init();
		printf("%lld\n", solve());
		if (t) printf("\n");
	}
	return 0;
}


关于js报$ is not a function 的问题

原文:http://blog.csdn.net/machunmei2/article/details/18553803

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!