uva 10755 - Garbage Heap
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1696
10755 - Garbage Heap Time limit: 3.000 seconds |
Garbage Heap
Time limit: 3.000 seconds
Memory limit: 64 megabytes
Farmer John has a heap of garbage formed in a rectangular parallelepiped.
It consists of a x b x c garbage pieces each of which has a value. The value of a piece may be 0, if the piece is neither profitable nor harmful, and may be negative which means that the piece is not just unprofitable, but even harmful (for environment).
The farmer thinks that he has too much harmful garbage, so he wants to decrease the heap size, leaving a rectangular nonempty parallelepiped of smaller size cut of the original heap to maximize the sum of the values of the garbage pieces in it. You have to find the optimal parallelepiped value. (Actually, if any smaller parallelepiped has value less than the original one, the farmer will leave the original parallelepiped).
Input
The first line of the input contains the number of the test cases, which is at most 15. The descriptions of the test cases follow. The first line of a test case description contains three integers A, B, and C (1 ≤ A, B, C ≤ 20). The next lines contain a .b .c numbers, which are the values of garbage pieces. Each number does not exceed 2 ^ 31by absolute value. If we introduce coordinates in the parallelepiped such that the cell in one corner is (1,1,1) and the cell in the opposite corner is (A,B,C), then the values are listed in the order
The test cases are separated by blank lines.
Output
For each test case in the input, output a single integer denoting the maximal value of the new garbage heap. Print a blank line between test cases.
Examples
Input |
Output |
1 2 2 2-1 2 0 -3 -2 -1 1 5 |
6 |
AC代码:
// UVa10755 Garbage heap #include<cstdio> #include<cstring> #include<algorithm> #define FOR(i,s,t) for(int i = (s); i <= (t); ++i) using namespace std; void expand(int i, int& b0, int& b1, int& b2) { b0 = i&; i >>= ; b1 = i&; i >>= ; b2 = i&; } int sign(int b0, int b1, int b2) { return (b0 + b1 + b2) % == ? : -; } const int maxn = ; const long long INF = 1LL << ; long long S[maxn][maxn][maxn]; long long sum(int x1, int x2, int y1, int y2, int z1, int z2) { int dx = x2-x1+, dy = y2-y1+, dz = z2-z1+; long long s = ; for(int i = ; i < ; i++) { int b0, b1, b2; expand(i, b0, b1, b2); s -= S[x2-b0*dx][y2-b1*dy][z2-b2*dz] * sign(b0, b1, b2); } return s; } int main() { int T; scanf("%d", &T); while(T--) { int a, b, c, b0, b1, b2; scanf("%d%d%d", &a, &b, &c); memset(S, , sizeof(S)); FOR(x,,a) FOR(y,,b) FOR(z,,c) scanf("%lld", &S[x][y][z]); FOR(x,,a) FOR(y,,b) FOR(z,,c) FOR(i,,){ expand(i, b0, b1, b2); S[x][y][z] += S[x-b0][y-b1][z-b2] * sign(b0, b1, b2); } long long ans = -INF; FOR(x1,,a) FOR(x2,x1,a) FOR(y1,,b) FOR(y2,y1,b) { long long M = ; FOR(z,,c) { long long s = sum(x1,x2,y1,y2,,z); ans = max(ans, s - M); M = min(M, s); } } printf("%lld\n", ans); if(T) printf("\n"); } return ; }
uva 10755 - Garbage Heap的更多相关文章
- UVa 10755 Garbage Heap (暴力+前缀和)
题意:有个长方体由A*B*C组成,每个废料都有一个价值,要选一个子长方体,使得价值最大. 析:我们暴力枚举上下左右边界,然后用前缀和来快速得到另一个,然后就能得到长方体,每次维护一个最小值,然后差就是 ...
- 【降维解法:最大字段和->最大子矩阵和->最终版最大子长方体和】【UVA10755】Garbage Heap
突然感觉刷完这一套专题后 码力有了质的飞跃,fighting 努力会有结果! 最大字段和是一个很经典的问题 O(n)算法 而对于最大子矩阵和 可以思考一个这样的想法 枚举上下边界i,j把i到j这一段的 ...
- 【白书训练指南】(UVa10755)Garbage Heap
先po代码,之后把我那几个不太明了的知识点讲讲,巩固以下.三维的扫描线算法想要掌握还真是有一定的难度的. 代码 #include <iostream> #include <cstri ...
- uva 11673 Garbage Remembering Exam (概率)
题目链接: http://vjudge.net/problem/viewProblem.action?id=42000 该过程为随即过程,因此总期望值等于个单词对应的期望值,即它们wasted的概率 ...
- UVA - 11637 Garbage Remembering Exam (组合+可能性)
Little Tim is now a graduate,and is thinking about higher studies. However, he first needs to appear ...
- UVA 11637 Garbage Remembering Exam
#include <iostream> #include <stdio.h> #include <cstring> #include <math.h> ...
- examine self thrice a day2016
----------------------------2016----------------------- 12.31.2016 2016年,感恩一路帮助过我的所有人! 每个人来到世 ...
- JVM运行时数据区内容简述
JVM运行时数据区分为五个部分:程序计数器.虚拟机栈.本地方法栈.堆.方法区.如下图所示,五部分其中又分为线程共享区域和线程私有区域,下面将分别介绍每一部分. 1. PC程序计数器 程序计数器是一块较 ...
- .NET:CLR via C#The Managed Heap and Garbage Collection
Allocating Resources from the Managed Heap The CLR requires that all objects be allocated from the m ...
随机推荐
- PowerDesigner连接MySQL,建立逆向工程图解
传说中,程序员们喜欢用powerDesign进行数据库建模.通常都是先设计出物理模型图,在转换出数据库需要的SQL语句,从而生成数据库.但,江湖中流传着"powerDesign逆向工程&qu ...
- Android UI开发: 横向ListView(HorizontalListView)及一个简单相册的完整实现 (附源码下载)
http://blog.csdn.net/yanzi1225627/article/details/21294553 原文
- 设计模式:桥连模式(Bridge)
定 义:将抽象部分和它的实现部分分离,使它们可以独立的变化. 结构图: 实现类: //Implementor(实现)类 public abstract class Implementor { pu ...
- 设计模式:工厂方法模式(Factory Method)
定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类. 工厂方法使一个类的实例化延迟到其子类. 结构图: 示例: HTML代码: <html xmlns="http://www. ...
- Magento Error – The directory is not writable by server.
When trying to use the insert image functionality in Magento if you receive an error saying: “The di ...
- ligerui多选动态下拉框
今天下午要求做一个支持多选的,并且插件用ligerui的,当时有点小懵了,因为没用过ligerui啊!而且按照API的介绍,我做得也很好啊,可是为什么就是显示不出来?据说有位小神比较厉害,请教来之,两 ...
- Codeforce727B --- Bill Total Value(字符串处理 正则表达式)
先说一下正则表达式 %*[a-z]表示忽略前面的小写字符,%[0-9]表示把紧接着非字符的连续数字存入t字符串中去; 从"abc123de4f"中得到"123" ...
- WPF 本周、本月、本季、本年的第一天与最后一天取法
lblWeekStart.Content = DateTime.Now.AddDays(Convert.ToDouble((0 - Convert.ToInt16(DateTime.Now.DayOf ...
- 如何查看Servlet、JSP的版本(Tomcat V7.0.70)
1. 简要说明:Tomcat6.0 所支持的是Servlet2.5,Tomcat 7.0 所支持的Servlet3.0,Servlet2.5 和Servlet3.0的差异较大,对于Servlet3.0 ...
- JQuery:JQuery添加元素
JQuery:添加元素通过 jQuery,可以很容易地添加新元素/内容.添加新的HTML内容.我们将学习用于添加新内容的四个jQuery方法: append() - 在被选元素的结尾插入内容 prep ...