Uva10755
在题中的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的更多相关文章
- 【降维解法:最大字段和->最大子矩阵和->最终版最大子长方体和】【UVA10755】Garbage Heap
突然感觉刷完这一套专题后 码力有了质的飞跃,fighting 努力会有结果! 最大字段和是一个很经典的问题 O(n)算法 而对于最大子矩阵和 可以思考一个这样的想法 枚举上下边界i,j把i到j这一段的 ...
- 【白书训练指南】(UVa10755)Garbage Heap
先po代码,之后把我那几个不太明了的知识点讲讲,巩固以下.三维的扫描线算法想要掌握还真是有一定的难度的. 代码 #include <iostream> #include <cstri ...
- uva 10755 - Garbage Heap
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...
随机推荐
- Struts2 输入校验 第四弹
ActionSupport 里面有一个validate.可以重写里面你的方法. 校验执行流程: 1)首先进行类型转化 2)然后进行输入校验(执行validate方法) 3)如果在上述过程中出现了任何错 ...
- kvm初体验之七:attach usb storage device to a VM
1. virsh attach-disk vm1 /dev/sdb sdc 将host上的/dev/sdb挂载到vm1的/dev/sdc上 2. virsh detach-disk vm1 sdc 将 ...
- spring2.5整合struts2
首先第一步: 导入jar包: 我的做法: 导入你的基本使用的spring的jar包 和基本使用的struts2的jar包 然后struts2中有一个和spring整合的jar包一定要导入,不然会抛异常 ...
- python二进制数据
一直以来对python的二进制数据搞不清楚. 一.二进制显示格式与实际存储值区别 1.二进制数据在python中以字节(bytes)类型和字节数组类型(bytearray)保存着,前者数据固定,后者不 ...
- ActorModel 概念翻译
学习 skynet 时初次接触到 ActorModel 模型,始终觉得有必要从宏观上了解 ActorModel 的概念,所以以维基上这篇文章为参考,把文章中的部分内容翻译成中文,好让自己体会一下 Ac ...
- Linux 中安装软件报缺少共享库文件的错误
linux 安装一些如软件 或者相关的模块时,经常报出缺少一些依赖包的 libxxx.so等的共享库文件 首先找到 该共享库文件 然后查看/etc/ld.so.conf 这个文件记录了编译时使用的动态 ...
- java面试题06
题目: 数据库 1. 表名:g_cardapply 字段(字段名/类型/长度): g_applyno varchar 8://申请单号(关键字) g_applydate bigint 8://申请日期 ...
- 关于CDH
进入到任何一个Host的页面,点击“components",就可以看到这个主机安装的组件的版本
- POJ1797(dijkstra求最短最长边)
Heavy Transportation Time Limit: 3000MS Memory Limit: 30000K Total Submissions: 26442 Accepted: ...
- web攻击之零:WEB攻击及防御技术汇总
一.XSS攻击 [介绍] xss攻击是跨站脚本攻击,例如在表单中提交含有可执行的javascript的内容文本,如果服务器端没有过滤或转义这些脚本,而这些脚本由通过内容的形式发布到了页面上,这个时候如 ...