首页 > 其他 > 详细

UVa 10755 Garbage Heap

时间:2014-08-07 13:05:10      阅读:199      评论:0      收藏:0      [点我收藏+]

三维的形式下的最大子段问题

既然二维可以压缩成一维的情况,那么同样的,三维也可以压缩成一维转化成最大子段问题

枚举y和z的边界,压缩后在x轴上求最大子段,用ans记录最大值

时间复杂度是O(n^5),由于数据不算太大,所以不会超时

 

一直WA,一直WA,Orz

后来终于发现是输出格式的问题,每个输出之间都要加一个换行符,换行啊换行!你坑死窝了

为何反馈信息是WA而不是PE,真是误导人啊。=_=!!

 

bubuko.com,布布扣
 1 //#define LOCAL
 2 #include <iostream>
 3 #include <cstdio>
 4 #include <cstring>
 5 #include <algorithm>
 6 using namespace std;
 7 
 8 const int maxn = 30;
 9 long long cube[maxn][maxn][maxn], sum[maxn][maxn][maxn], a[maxn];
10 const long long INF = 1LL << 60;
11 
12 int main(void)
13 {
14     #ifdef LOCAL
15         freopen("10755in.txt", "r", stdin);
16     #endif
17 
18     int T;
19     scanf("%d", &T);
20     while(T--)
21     {
22         int x, y, z;
23         int i, j, k;
24         scanf("%d%d%d", &x, &y, &z);
25         for(i = 1; i <= x; ++i)
26             for(j = 1; j <= y; ++j)
27                 for(k = 1; k <= z; ++k)
28                     scanf("%lld", &cube[i][j][k]);
29         memset(sum, 0, sizeof(sum));
30         for(i = 1; i <= x; ++i)
31             for(j = 1; j <= y; ++j)
32                 for(k = 1; k <= z; ++k)
33                     sum[i][j][k] = sum[i][j-1][k] + sum[i][j][k-1] - sum[i][j-1][k-1] + cube[i][j][k];
34 
35         long long ans = -INF;
36         for(int i1 = 1; i1 <= y; ++i1)
37             for(int i2 = i1; i2 <= y; ++i2)
38                 for(int j1 = 1; j1 <= z; ++j1)
39                     for(int j2 = j1; j2 <= z; ++j2)
40                     {
41                         for(k = 1; k <= x; ++k)
42                             a[k] = sum[k][i2][j2] - sum[k][i1-1][j2] - sum[k][i2][j1-1] + sum[k][i1-1][j1-1];
43 
44                         ans = max(a[1], ans);
45                         for(k = 2; k <= x; ++k)
46                         {
47                             a[k] = max(a[k], a[k] + a[k-1]);
48                             ans = max(ans, a[k]);
49                         }
50                     }
51 
52         printf("%lld\n", ans);
53         if(T)
54             printf("\n");
55     }
56     return 0;
57 }
萌萌的代码君

 

UVa 10755 Garbage Heap,布布扣,bubuko.com

UVa 10755 Garbage Heap

原文:http://www.cnblogs.com/AOQNRMGYXLMV/p/3896774.html

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