uva 10755 - Garbage Heap

时间:2021-07-17 23:57:43

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).

uva 10755 - Garbage Heap

  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

uva 10755 - Garbage Heap

  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的更多相关文章

  1. UVa 10755 Garbage Heap &lpar;暴力&plus;前缀和&rpar;

    题意:有个长方体由A*B*C组成,每个废料都有一个价值,要选一个子长方体,使得价值最大. 析:我们暴力枚举上下左右边界,然后用前缀和来快速得到另一个,然后就能得到长方体,每次维护一个最小值,然后差就是 ...

  2. 【降维解法:最大字段和-&gt&semi;最大子矩阵和-&gt&semi;最终版最大子长方体和】【UVA10755】Garbage Heap

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

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

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

  4. uva 11673 Garbage Remembering Exam (概率)

    题目链接: http://vjudge.net/problem/viewProblem.action?id=42000 该过程为随即过程,因此总期望值等于个单词对应的期望值,即它们wasted的概率 ...

  5. UVA - 11637 Garbage Remembering Exam (组合&plus;可能性)

    Little Tim is now a graduate,and is thinking about higher studies. However, he first needs to appear ...

  6. UVA 11637 Garbage Remembering Exam

    #include <iostream> #include <stdio.h> #include <cstring> #include <math.h> ...

  7. examine self thrice a day2016

    ----------------------------2016-----------------------  12.31.2016 2016年,感恩一路帮助过我的所有人!       每个人来到世 ...

  8. JVM运行时数据区内容简述

    JVM运行时数据区分为五个部分:程序计数器.虚拟机栈.本地方法栈.堆.方法区.如下图所示,五部分其中又分为线程共享区域和线程私有区域,下面将分别介绍每一部分. 1. PC程序计数器 程序计数器是一块较 ...

  9. &period;NET:CLR via C&num;The Managed Heap and Garbage Collection

    Allocating Resources from the Managed Heap The CLR requires that all objects be allocated from the m ...

随机推荐

  1. Windows Locale Codes - Sortable list(具体一个语言里还可具体细分,中国是2052,法国是1036)

    Windows Locale Codes - Sortable list NOTE: Code page is an outdated method for character encoding, y ...

  2. DP4J -- mnist

    标签(空格分隔): DeepLearning mnist mnist是一个数据集,其中包含很多手写数字的图片,每张图片都已经打上了label: Deep Learning 传统的机器学习神经网络由一层 ...

  3. 模板方法模式&lpar;Template Method Pattern&rpar;

    模板方法模式是一种基于继承的代码复用技术,定义一个操作中的算法的骨架,而将步骤延迟到子类中.模板方法使得子类可以不改变一个算法的结构即可重定义算法的某些特定步骤. 模式中的角色 抽象类(Abstrac ...

  4. PLSQL 的简单命令之五

    --1. 查询和Zlotkey相同部门的员工姓名和雇用日期 select a.last_name,a.hire_date ,b.department_name from employees a,dep ...

  5. 表单和验证事件以及marquee标签

    1.表单验证<form></form> (1).非空验证(去空格) (2).对比验证(跟一个值对比) (3).范围验证(根据一个范围进行判断) (4).固定格式验证:电话号码, ...

  6. 数据权限设计——基于EntityFramework的数据权限设计方案:一种设计思路

    前言:“我们有一个订单列表,希望能够根据当前登陆的不同用户看到不同类型的订单数据”.“我们希望不同的用户能看到不同时间段的扫描报表数据”.“我们系统需要不同用户查看不同的生产报表列”.诸如此类,最近经 ...

  7. 构造 this super

    构造方法 我们对封装已经有了基本的了解,接下来我们来看一个新的问题,依然以Person为例,由于Person中的属性都被private了,外界无法直接访问属性,必须对外提供相应的set和get方法.当 ...

  8. openStack cpu绑定

    来自:http://fishcried.com/2015-01-09/cpu_bindings/ 前一篇理解cpu topology对CPU Topology进行了学习总结,这里想总结下OpenSta ...

  9. django class-based view 考古

    django 中的view中进化史: 1.在“天地初开”的时候django中的view是通过函数来定义的.函数接收一个request并以一个response作为返回: 对于这个request是通过po ...

  10. 20155233 2016-2017-2 《Java程序设计》第10周学习总结

    20155233 2016-2017-2 <Java程序设计>第10周学习总结 学习目标 了解计算机网络基础 掌握Java Socket编程 理解混合密码系统 掌握Java 密码技术相关A ...