在题中的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

  1. #include<bits/stdc++.h>
  2.  
  3. #define inf 0x3f3f3f3f
  4.  
  5. const int maxn=;
  6.  
  7. using namespace std;
  8.  
  9. typedef long long ll;
  10.  
  11. int t;
  12.  
  13. int a,b,c;
  14.  
  15. ll d[maxn+][maxn+][maxn+];
  16.  
  17. ll sum[maxn+][maxn+][maxn+];
  18.  
  19. int main()
  20. {
  21. scanf("%d",&t);
  22. while(t--){
  23. memset(d, ,sizeof(d));
  24. memset(sum,,sizeof(sum));
  25. scanf("%d%d%d",&a,&b,&c);
  26. for(int i = ; i <= a; i++){
  27. for(int j = ; j <= b; ++j){
  28. for(int k = ; k <= c; ++k){
  29. scanf("%lld",&d[i][j][k]);
  30. }
  31. }
  32. }
  33.  
  34. for(int i = c; i >= ; --i){
  35. for(int j = ; j <= b; ++j){
  36. for(int k = ; k <= a; ++k){
  37. sum[k][j][i] = (sum[k-][j][i] + sum[k][j-][i] -
  38. sum[k-][j-][i] + sum[k][j][i+] - sum[k-][j][i+] -
  39. sum[k][j-][i+] + sum[k-][j-][i+] + d[k][j][i]);
  40. }
  41. }
  42. }
  43.  
  44. ll ans = -(ll)((1LL)<<);
  45. for(int x1 = ; x1 <= a; ++x1){
  46. for(int x2 = x1; x2 <= a; ++x2){
  47. for(int y1 = ; y1 <= b; ++y1){
  48. for(int y2 = y1; y2 <= b; ++y2){
  49. ll min_sumz = ;
  50. for(int z = ; z <= c; ++z){
  51. ll temp = sum[x2][y2][] -
  52. (sum[x1-][y2][] + sum[x2][y1-][] -
  53. sum[x1-][y1-][] + sum[x2][y2][z+] - sum[x1-][y2][z+] -
  54. sum[x2][y1-][z+] + sum[x1-][y1-][z+]);
  55. ans = max(ans, temp - min_sumz);
  56. min_sumz = min(min_sumz, temp);
  57. }
  58. }
  59. }
  60. }
  61. }
  62.  
  63. printf("%lld\n",ans);
  64. if(t){
  65. printf("\n");
  66. }
  67. }
  68. return ;
  69. }

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. [干货]兼容HTML5的Placeholder属性-更新版v0.10102013

    HTML5对Web Form做了许多增强,比如input新增的type类型.Form Validation等.Placeholder是HTML5新增的另一个属性,当input或者textarea设置了 ...

  2. What can I yield?

    浏览器支持情况:Enabled by default in desktop Chrome 39  一句话回答这个问题是:Promise,Thunks.为什么没有Generators?因为Generat ...

  3. BZOJ_2064_分裂_状压DP

    BZOJ_2064_分裂_状压DP Description 背景: 和久必分,分久必和... 题目描述: 中国历史上上分分和和次数非常多..通读中国历史的WJMZBMR表示毫无压力. 同时经常搞OI的 ...

  4. poj1065 Wooden Sticks[LIS or 贪心]

    地址戳这.N根木棍待处理,每根有个长x宽y,处理第一根花费1代价,之后当处理到的后一根比前一根长或者宽要大时都要重新花费1代价,否则不花费.求最小花费代价.多组数据,N<=5000 本来是奔着贪 ...

  5. vue之axios+php+mysql

    博主原创,未经许可请勿转载 哦 1.axios配置请看上篇 2.mysql数据库编写,表名为area_list 3.json.php文件在notebeans中编写 <?php header('C ...

  6. OGG 11g Checkpoint 详解

    OGG Checkpoint 详解   定位中断的位置,下次启动从中断的位置开始恢复.     1.target  端配置: 2.一条记录对应一个replicat   一. Extract Check ...

  7. UnrealScript常用函数汇总

    转自:http://www.unrealchina.org/forum.php?mod=viewthread&tid=672&extra=page%3D1 foreach [用来遍历游 ...

  8. complexType

    //decltype的表达式如果是加上括号的变量,结果将是引用 decltype((variable)) ruiy; //此变量的数据类型是引用(但此处变量的申明语句是错误的,引用不是对象,指向的对象 ...

  9. nohup开机自启脚本

    #!/bin/bash cd /root/xcloud/ str=$"/n" sstr=$(echo -e $str) nohup ./deploy >>/dev/nu ...

  10. linux下安装mysql的三种方法:rpm包安装、yum安装、源码包安装

    1 安装MySQL数据库服务器安装方法一://查询系统自带的数据库rpm -qa | grep -i mysql //卸载查询到的所有mysqlrpm -e --nodeps mysql-libs-5 ...