在题中的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实现3D木块旋转动画

    CSS3实现3D木块旋转动画,css3特效,旋转动画,3D,立体效果,CSS3实现3D木块旋转动画是一款迷人的HTML5+CSS3实现的3D旋转动画. 代码下载:http://www.huiyi8.c ...

  2. IntelliJ IDEA 的 project 和 module 区别与关系

    在IDEA 创建一个project,目录结构是这样的:在project下创建一个module之后目录结构是这样的: 简单的概括如下: IntelliJ系中的 Project  相当于Eclipse系中 ...

  3. Memcached HA架构探索

    https://code.google.com/p/memagent/ 标签:memcached magent 高可用 HA 架构原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者 ...

  4. 清除float浮动三种方式

    Float的作用? w3c的官方解释: Content flows down the right side of a left-floated box and down the left side o ...

  5. L94

    Early-morning births are genetically programmed THE notion that nothing good happens after midnight ...

  6. 二:apache的Qpid消息中间件介绍

    一:什么是Qpid?--->Qpid 是 Apache 开发的一款面向对象的消息中间件,它是一个 AMQP 的实现,可以和其他符合 AMQP 协议的系统进行通信.--->Qpid 提供了 ...

  7. 「LuoguP2365」 任务安排(dp

    题目描述 N个任务排成一个序列在一台机器上等待完成(顺序不得改变),这N个任务被分成若干批,每批包含相邻的若干任务.从时刻0开始,这些任务被分批加工,第i个任务单独完成所需的时间是Ti. 在每批任务开 ...

  8. express使用https

    目录 申请免费ssl证书 修改express的./bin/www 申请免费ssl证书 直接去阿里云申请一个免费的ssl,选择neginx下载证书就可以了,解压得到一个xxx.key.xxx.crt文件 ...

  9. requirejs的打包工具r.js

    不建议用命令行,还是用配置文件比较方便--build.js. 我的build.js文件内容大概如下: ( { appDir : './', baseUrl : './scripts', dir : ' ...

  10. WPF Background的设置有坑

    今天帮忙同事解决在后台绑定时,动态更改控件(Grid)的Background. 有个陷阱,C#有2个命名空间有Brush和Color, 分别为System.Drawing和System.Window. ...