在题中的A*B*C的矩形中,当确定X1,X2,Y1,Y2时,1->z的子矩形的和为

sum[x2][y2][1] -(sum[x1-1][y2][1] + sum[x2][y1-1][1] -sum[x1-1][y1-1][1] + sum[x2][y2][z+1] - sum[x1-1][y2][z+1] -sum[x2][y1-1][z+1] + sum[x1-1][y1-1][z+1]);

sum[x][y][z]指的是,以(x,y,z)为右下角的矩形的和

sum[x][y][z]的递推公式为 sum[k][j][i] = (sum[k-1][j][i] + sum[k][j-1][i] -sum[k-1][j-1][i] + sum[k][j][i+1] - sum[k-1][j][i+1] -sum[k][j-1][i+1] + sum[k-1][j-1][i+1] + d[k][j][i]);

本题最后结果可能会很大,所以ans的初值要赋值为最小的longlong

#include<bits/stdc++.h>

#define inf 0x3f3f3f3f

const int maxn=;

using namespace std;

typedef long long ll;

int t;

int a,b,c;

ll d[maxn+][maxn+][maxn+];

ll sum[maxn+][maxn+][maxn+];

int main()
{
scanf("%d",&t);
while(t--){
memset(d, ,sizeof(d));
memset(sum,,sizeof(sum));
scanf("%d%d%d",&a,&b,&c);
for(int i = ; i <= a; i++){
for(int j = ; j <= b; ++j){
for(int k = ; k <= c; ++k){
scanf("%lld",&d[i][j][k]);
}
}
} for(int i = c; i >= ; --i){
for(int j = ; j <= b; ++j){
for(int k = ; k <= a; ++k){
sum[k][j][i] = (sum[k-][j][i] + sum[k][j-][i] -
sum[k-][j-][i] + sum[k][j][i+] - sum[k-][j][i+] -
sum[k][j-][i+] + sum[k-][j-][i+] + d[k][j][i]);
}
}
} ll ans = -(ll)((1LL)<<);
for(int x1 = ; x1 <= a; ++x1){
for(int x2 = x1; x2 <= a; ++x2){
for(int y1 = ; y1 <= b; ++y1){
for(int y2 = y1; y2 <= b; ++y2){
ll min_sumz = ;
for(int z = ; z <= c; ++z){
ll temp = sum[x2][y2][] -
(sum[x1-][y2][] + sum[x2][y1-][] -
sum[x1-][y1-][] + sum[x2][y2][z+] - sum[x1-][y2][z+] -
sum[x2][y1-][z+] + sum[x1-][y1-][z+]);
ans = max(ans, temp - min_sumz);
min_sumz = min(min_sumz, temp);
}
}
}
}
} printf("%lld\n",ans);
if(t){
printf("\n");
}
}
return ;
}

Uva10755的更多相关文章

  1. 【降维解法:最大字段和->最大子矩阵和->最终版最大子长方体和】【UVA10755】Garbage Heap

    突然感觉刷完这一套专题后 码力有了质的飞跃,fighting 努力会有结果! 最大字段和是一个很经典的问题 O(n)算法 而对于最大子矩阵和 可以思考一个这样的想法 枚举上下边界i,j把i到j这一段的 ...

  2. 【白书训练指南】(UVa10755)Garbage Heap

    先po代码,之后把我那几个不太明了的知识点讲讲,巩固以下.三维的扫描线算法想要掌握还真是有一定的难度的. 代码 #include <iostream> #include <cstri ...

  3. uva 10755 - Garbage Heap

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...

随机推荐

  1. CSS3悬停特效合集Hover.css

    CSS3悬停特效合集Hover.css是一款特效丰富,支持2D变化特效.边框特效.阴影特效等: 使用简单,可直接复制相关特效代码,快速应用到元素上. 源码地址:http://www.huiyi8.co ...

  2. RQNOJ 140 分配时间:dp

    题目链接:https://www.rqnoj.cn/problem/140 题意: 小王参加的考试是几门科目的试卷放在一起考,一共给t分钟来做. 他现在已经知道第i门科目花k分钟可以拿到w[i][k] ...

  3. hdu-4417 Super Mario(树状数组 + 划分树)

    题目链接: Super Mario Time Limit: 2000/1000 MS (Java/Others)     Memory Limit: 32768/32768 K (Java/Other ...

  4. linux进程学习-进程描述符,控制块

    从数据结构的角度,进程用task_struct结构来描述,称为“进程描述符 (Process Descriptor)”或者“进程控制块(Process Control Block, PCB)”,其包含 ...

  5. osx快捷键表示图

  6. Redis的Spring配置讲解

    Redis是一种特殊类型的数据库,他被称之为key-value存储 本文覆盖缓存和存储两方面进行说明,使用的是Spring 4.0和Java配置方式 代码地址下载地址:https://github.c ...

  7. win10 设备摄像头,麦克风,【隐私】权限

    win10 因为隐私问题, 把mic,摄像头, 定位功能关闭,  之后调用USB摄像头的时候,忘了这个, 接口API 一直返回调用失败,[不能创建视频捕捉过滤器 hr=0x80070005] => ...

  8. fabnacii数列

    Fibonacci数 时间限制:3000 ms | 内存限制:65535 KB 难度:1 描述 无穷数列1,1,2,3,5,8,13,21,34,55...称为Fibonacci数列,它可以递归地定义 ...

  9. 【245】◀▶IEW-Unit10

    Unit 10 Censorship 1. Model1题目及范文分析 Some parents believe that there is no harm in allowing their chi ...

  10. [hdu2544]最短路spfa

    解题关键:最短路模板一直没整理过,这里整理了一下spfa+链式前向星建图的最短路模板,以后网络赛省的打了. spfa算法的关键就是松弛操作,只有进行松弛操作,其后的点距离才可能被更新. #includ ...