UVA 10755 Garbage Heap(最大子长方体 可拓展更高维)
2016-10-02 11:04
381 查看
// // main.cpp // Richard // // Created by 邵金杰 on 16/10/2. // Mail:1016427040@qq.com or jasonshaosjj@gmail.com // Copyright © 2016年 邵金杰. All rights reserved. // #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; #define rep(i,s,e) for(int i=(s);i<=(e);i++) const int maxn=30; const long long inf=(1LL<<60); long long s[maxn][maxn][maxn]; void expand(int i,int &b0,int &b1,int &b2) { b0=i&1;i>>=1; b1=i&1;i>>=1; b2=i&1; } int sign(int b0,int b1,int b2) { return (b0+b1+b2)%2==1?1:-1; } long long sum(int x1,int x2,int y1,int y2,int z1,int z2) { long long sx=0; int dx=x2-x1+1,dy=y2-y1+1,dz=z2-z1+1; rep(i,0,7) { int b0,b1,b2; expand(i,b0,b1,b2); sx-=s[x2-dx*b0][y2-dy*b1][z2-dz*b2]*sign(b0,b1,b2); } return sx; } int main() { int t; scanf("%d",&t); while(t--) { int a,b,c,b0,b1,b2; scanf("%d%d%d",&a,&b,&c); rep(i,1,a) rep(j,1,b) rep(k,1,c) scanf("%lld",&s[i][j][k]); rep(i,1,a) rep(j,1,b) rep(k,1,c) rep(h,1,7) { expand(h,b0,b1,b2); s[i][j][k]+=s[i-b0][j-b1][k-b2]*sign(b0,b1,b2); } long long ans=-inf; rep(x1,1,a) rep(x2,x1,a) rep(y1,1,b) rep(y2,y1,b) { long long M=0; rep(z,1,c) { long long t=sum(x1,x2,y1,y2,1,z); ans=max(ans,t-M); M=min(M,t); } } printf("%lld\n",ans); if(t) printf("\n"); } return 0; }
相关文章推荐
- 【降维解法:最大字段和->最大子矩阵和->最终版最大子长方体和】【UVA10755】Garbage Heap
- UVA 10755 Garbage Heap 最大子立方体和
- UVA-10755 Garbage Heap 三维子矩阵最大和
- UVa 10755 - Garbage Heap 最大子块和 dp
- uva 10755 - Garbage Heap(三维最大子矩阵)
- UVa 10755 - Garbage Heap 最大子块和 dp
- UVA 10755 - Garbage Heap(三维子矩阵最大和)
- uva10755 - Garbage Heap 找最大子立方体
- Uva 10755 Garbage Heap(三维最大子矩阵)
- uva10755 - Garbage Heap (最大子立方体)
- UVa 10755 - Garbage Heap 三维最大子矩阵问题转化为1维..
- UVA-10755 Garbage Heap 三维子矩阵最大和
- UVa 10755 Garbage Heap (最大价值子立方体+扫描法)
- 【降维解法:最大字段和->最大子矩阵和->最终版最大子长方体和】【UVA10755】Garbage Heap
- UVA - 10755 Garbage Heap 三维子矩阵最大和(压缩)
- 【UVa】10755 Garbage Heap 三维前缀和
- uva 10755 - Garbage Heap
- UVA 10755 Garbage Heap
- UVa 10755 Garbage Heap
- UVA - 10755 Garbage Heap