UVa 10755 - Garbage Heap 三维最大子矩阵问题转化为1维..
2013-04-24 16:42
567 查看
A上C(20,2)卡上下界...B上C(20,2)卡上下界...在C的方向上做一维的最大连续字串问题...这样把3维的最大子矩阵问题就转化为1维的了...
预处理...sum[ x ] [ y ] [ z ] 代表在z这个二维平面上...(1,1)和(x,y)分别为对角坐标的矩阵的所有数之和....
Program:
预处理...sum[ x ] [ y ] [ z ] 代表在z这个二维平面上...(1,1)和(x,y)分别为对角坐标的矩阵的所有数之和....
Program:
//http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1696 #include<iostream> #include<stdio.h> #include<string.h> #include<cmath> #include<map> #include<algorithm> #define ll long long #define oo 2000000000 using namespace std; int A,B,C; ll sum[22][22][22]; ll getsum(int As,int Ae,int Bs,int Be,int C) { return sum[Ae][Be][C]-sum[As-1][Be][C]-sum[Ae][Bs-1][C]+sum[As-1][Bs-1][C]; } int main() { int T,t,i,j,k,As,Ae,Bs,Be,Cs,Ce; ll m,ans; cin>>T; for (t=1;t<=T;t++) { cin>>A>>B>>C; memset(sum,0,sizeof(sum)); for (i=1;i<=A;i++) for (j=1;j<=B;j++) for (k=1;k<=C;k++) { cin>>sum[i][j][k]; sum[i][j][k]+=sum[i-1][j][k]+sum[i][j-1][k]-sum[i-1][j-1][k]; } ans=-oo; ans*=10000; for (As=1;As<=A;As++) for (Ae=As;Ae<=A;Ae++) for (Bs=1;Bs<=B;Bs++) for (Be=Bs;Be<=B;Be++) { Cs=Ce=1; m=0; while (Ce<=C) { m+=getsum(As,Ae,Bs,Be,Ce); if (m>ans) ans=m; while (m<0 && Cs<=Ce) { m-=getsum(As,Ae,Bs,Be,Cs); Cs++; if (Cs<=Ce && m>ans) ans=m; //保证至少一个矩阵 } Ce++; } } if (t!=1) cout<<endl; cout<<ans<<endl; } return 0; } /* 1 2 3 3 21 -39 4 -39 4 -44 1 -32 -25 -35 2 17 6 10 2 -12 -22 35 ans 55 1 1 2 2 -38 40 21 -34 ans 40 */
相关文章推荐
- Uva 10755 Garbage Heap(三维最大子矩阵)
- uva 10755 - Garbage Heap(三维最大子矩阵)
- UVA - 10755 Garbage Heap 三维子矩阵最大和(压缩)
- 【降维解法:最大字段和->最大子矩阵和->最终版最大子长方体和】【UVA10755】Garbage Heap
- 【降维解法:最大字段和->最大子矩阵和->最终版最大子长方体和】【UVA10755】Garbage Heap
- UVA-10755 Garbage Heap 三维子矩阵最大和
- UVA 10755 Garbage Heap 三维最大子矩阵和 -
- UVA 10755 - Garbage Heap(三维子矩阵最大和)
- UVA-10755 Garbage Heap 三维子矩阵最大和
- UVa 10074 Take the Land (转化思想&最大子矩阵和)
- 【UVa】10755 Garbage Heap 三维前缀和
- UVa 10755 - Garbage Heap 最大子块和 dp
- UVa 10755 - Garbage Heap 最大子块和 dp
- UVA 10755 Garbage Heap(最大子长方体 可拓展更高维)
- uva10755 - Garbage Heap (最大子立方体)
- uva 10755 - Garbage Heap(最大和问题)
- uva10755 - Garbage Heap 找最大子立方体
- UVa 10755 Garbage Heap (最大价值子立方体+扫描法)
- UVA 10755 Garbage Heap 最大子立方体和
- 最大子矩阵问题