考虑将三个矩形按某种方式划分为再三个大矩形中找最大值,容易发现只有6种划分方式,分为两类:
1.4种,考虑第一条横/竖和第二条在第一条的两侧,这一类情况只需要预处理出左上/左下/右上/右下的最大子矩阵即可
2.2种,两条横线/竖线划分,以横线为例,只需要处理处每一行的答案,然后,然后简单维护一下即可

 1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 2005
4 int n,m,k,x,y,ans,f[N],a[N][N],ll[N][N],lr[N][N],rl[N][N],rr[N][N];
5 int S(int x,int y){
6 return a[x][y]-a[x-k][y]-a[x][y-k]+a[x-k][y-k];
7 }
8 int main(){
9 scanf("%d%d%d",&n,&m,&k);
10 for(int i=1;i<=n;i++)
11 for(int j=1;j<=m;j++){
12 scanf("%d",&x);
13 a[i][j]=a[i][j-1]+a[i-1][j]-a[i-1][j-1]+x;
14 }
15 for(int i=k;i<=n;i++)
16 for(int j=k;j<=m;j++)
17 ll[i][j]=max(max(ll[i][j-1],ll[i-1][j]),S(i,j));
18 for(int i=k;i<=n;i++)
19 for(int j=m-k+1;j;j--)
20 lr[i][j]=max(max(lr[i][j+1],lr[i-1][j]),S(i,j+k-1));
21 for(int i=n-k+1;i;i--)
22 for(int j=k;j<=m;j++)
23 rl[i][j]=max(max(rl[i][j-1],rl[i+1][j]),S(i+k-1,j));
24 for(int i=n-k+1;i;i--)
25 for(int j=m-k+1;j;j--)
26 rr[i][j]=max(max(rr[i][j+1],rr[i+1][j]),S(i+k-1,j+k-1));
27 for(int i=k;i<=n-k;i++)
28 for(int j=k;j<=m-k;j++){
29 ans=max(ans,ll[n][j]+lr[i][j+1]+rr[i+1][j+1]);
30 ans=max(ans,ll[i][j]+lr[i][j+1]+rr[i+1][1]);
31 ans=max(ans,ll[i][m]+rl[i+1][j]+rr[i+1][j+1]);
32 ans=max(ans,ll[i][j]+rl[i+1][j]+rr[1][j+1]);
33 }
34 for(int i=k;i<=n;i++)
35 for(int j=k;j<=m;j++)f[i]=max(f[i],S(i,j));
36 x=0;
37 for(int i=k;i<=n;i++){
38 x=max(x,f[i]);
39 int y=0;
40 for(int j=i+k;j<=n-k;j++){
41 y=max(y,f[j]);
42 ans=max(ans,x+y+rr[j+1][1]);
43 }
44 }
45 x=0;
46 memset(f,0,sizeof(f));
47 for(int i=k;i<=n;i++)
48 for(int j=k;j<=m;j++)f[j]=max(f[j],S(i,j));
49 for(int i=k;i<=m;i++){
50 x=max(x,f[i]);
51 int y=0;
52 for(int j=i+k;j<=m-k;j++){
53 y=max(y,f[j]);
54 ans=max(ans,x+y+rr[1][j+1]);
55 }
56 }
57 printf("%d",ans);
58 }

[bzoj1177]Oil的更多相关文章

  1. [BZOJ1177][Apio2009]Oil

    [BZOJ1177][Apio2009]Oil 试题描述 采油区域 Siruseri政府决定将石油资源丰富的Navalur省的土地拍卖给私人承包商以建立油井.被拍卖的整块土地为一个矩形区域,被划分为M ...

  2. BZOJ1177 [Apio2009]Oil 二维前缀和 二维前缀最值

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1177 题意概括 在一个n*m的矩阵中,每一个位置一个数字. 现在让你选出3个k*k的矩阵,它们互不 ...

  3. bzoj1177 [Apio2009]Oil 二维前缀最大值,和

    [Apio2009]Oil Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 2300  Solved: 932[Submit][Status][Disc ...

  4. BZOJ1177:[APIO2009]Oil(枚举,前缀和)

    Description 采油区域 Siruseri政府决定将石油资源丰富的Navalur省的土地拍卖给私人承包商以建立油井.被拍卖的整块土地为一个矩形区域,被划分为M×N个小块. Siruseri地质 ...

  5. BZOJ 4614 【Wf2016】 Oil

    题目链接:Oil 感觉同时几线作战有点吃不消啊-- 这道题有一个显然的结论,那就是最优的直线一定过某条线段的端点. 仔细想想很有道理.如果最终的直线没有过线段的端点的话,那么这条直线就一定可以平移,直 ...

  6. Oil Deposits

    Oil Deposits Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tota ...

  7. Oil Deposits(dfs)

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission( ...

  8. 2016HUAS暑假集训训练题 G - Oil Deposits

    Description The GeoSurvComp geologic survey company is responsible for detecting underground oil dep ...

  9. uva 572 oil deposits——yhx

    Oil Deposits  The GeoSurvComp geologic survey company is responsible for detecting underground oil d ...

随机推荐

  1. nginx禁止IP访问系统

    server { listen 80 default; server_name _; if ($host ~ "\d+\.\d+\.\d+\.\d") { return 404; ...

  2. Lamport时间戳论文笔记

    本文主要参考文献[1]完成. 声明:本人仅在博客园发表了本文章,笔名LightningStar,其他网站均为转载. 笔记 私以为,论文中作者的核心工作是为分布式系统建立了一种数学模型,并基于这种数学模 ...

  3. 题解 [HAOI2018]反色游戏

    题目传送门 题目大意 给出一个 \(n\) 个点 \(m\) 条无向边的图,每个点都有一个 \(\in [0,1]\) 的权值,每次可以选择一条边,然后将该边相连两点权值异或上 \(1\).问有多少种 ...

  4. 洛谷3783 SDOI2017 天才黑客(最短路+虚树+边转点+线段树优化建图)

    成功又一次自闭了 怕不是猪国杀之后最自闭的一次 一看到最短路径. 我们就能推测这应该是个最短路题 现在考虑怎么建图 根据题目的意思,我们可以发现,在本题中,边与边之间存在一些转换关系,但是点与点之间并 ...

  5. ls命令剖析

    目录 ls命令剖析 资料翻译 SYNOPSIS 使用方式 DESCRIPTION 说明 参数的说明 -l 参数字符的解释 文件权限的解释 FILES 文件夹 实战演练 ls 命令 ls -l 命令 l ...

  6. python收集参数与解包

    收集任意数量的实参 def make_pizza(*toppings): """打印顾客点的所有配料""" print(toppings) ...

  7. CentOS 压缩解压

    目录 命令 tar gzip.gunzip bzip2.bunzip2 zip.unzip 命令组合 打包:将多个文件合成一个总的文件,这个总的文件通常称为"归档". 压缩:将一个 ...

  8. 安装pytorch后import torch显示no module named 'torch'

    问题描述:在pycharm终端里通过pip指令安装pytorch,显示成功安装但是python程序和终端都无法使用pytorch,显示no module named 'torch'. 起因:电脑里有多 ...

  9. 集合先从ArrayList开始

    本篇文章非常建议直接从经典Demo开始哦~ 一.ArrayList简介 ArrayList 的底层是数组队列,相当于动态数组.与 Java 中的数组相比,它的容量能动态增长.在添加大量元素前,应用程序 ...

  10. .NET Core TLS 协议指定被我钻了空子~~~

    前言 此前,测试小伙伴通过工具扫描,平台TLS SSL协议支持TLS v1.1,这不安全,TLS SSL协议至少是v1.2以上才行,想到我们早已将其协议仅支持v1.3,那应该非我们平台问题.我依然自信 ...