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 ...
随机推荐
- 动态IP下群晖搭建DDNS服务
转载地址:https://www.zimrilink.com/share/dsm_aliddns_server.html 通过阿里云API(php)搭建出DDNS动态域名解析服务器;不同的是本文的方法 ...
- C++ 精确计时类
http://hi.baidu.com/ronyo/blog/item/ee7e71cf7d46c338f8dc61ad .html 在一些程序中经常要统计一个算法/函数花费的时间,每次都重新写 ...
- 查 101.201.62.30 IP信誉方法
查 101.201.62.30 IP信誉方法https://www.virustotal.com/#/ip-address/101.201.62.30https://talosintelligence ...
- openfire开发环境(3.9.1)
1.解压源码 2.把build/eclipse中的文件cp到源码跟目录,并修改文件名,前面增加"."号,变成eclipse工程. 3.导入eclipse, 把build/lib/, ...
- str_1.判断两个字符串每个字符出现的次数一样
1.两个字符串每个字符出现的次数一样 $str1 = "ab'c4*"; $str2 = "cb*'a4"; $ret = isBX($str1, $str2) ...
- codeforces 587B B. Duff in Beach(dp)
题目链接: B. Duff in Beach time limit per test 2 seconds memory limit per test 256 megabytes input stand ...
- Java 并发 —— Java 标准库对并发的支持及 java.util.concurrent 包
0. Collections.synchronizedXxx() Java 中常用的集合框架中的实现类:HashSet/TreeSet.ArrayList/LinkedList.HashMap/Tre ...
- 从结果推断过程----->使用System.out和Root Device
刚才解决了一个App中更新的逻辑问题.出问题之后发现,有很多处调用了更新,后来都不知道是哪里改写了SharedPreferences. 然后一直在挨个寻找每一处更新的地方,花了很多时间. 最后直接使用 ...
- 【Lintcode】062.Search in Rotated Sorted Array
题目: Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 ...
- WPF GridViewColumn Sort DataTemplate
wpf的GridViewColumn的排序要用到ICollectionView 的SortDescriptions. SortDescriptions数组里是 SortDescription, S ...