[bzoj1177]Oil
考虑将三个矩形按某种方式划分为再三个大矩形中找最大值,容易发现只有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的更多相关文章
- [BZOJ1177][Apio2009]Oil
[BZOJ1177][Apio2009]Oil 试题描述 采油区域 Siruseri政府决定将石油资源丰富的Navalur省的土地拍卖给私人承包商以建立油井.被拍卖的整块土地为一个矩形区域,被划分为M ...
- BZOJ1177 [Apio2009]Oil 二维前缀和 二维前缀最值
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1177 题意概括 在一个n*m的矩阵中,每一个位置一个数字. 现在让你选出3个k*k的矩阵,它们互不 ...
- bzoj1177 [Apio2009]Oil 二维前缀最大值,和
[Apio2009]Oil Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 2300 Solved: 932[Submit][Status][Disc ...
- BZOJ1177:[APIO2009]Oil(枚举,前缀和)
Description 采油区域 Siruseri政府决定将石油资源丰富的Navalur省的土地拍卖给私人承包商以建立油井.被拍卖的整块土地为一个矩形区域,被划分为M×N个小块. Siruseri地质 ...
- BZOJ 4614 【Wf2016】 Oil
题目链接:Oil 感觉同时几线作战有点吃不消啊-- 这道题有一个显然的结论,那就是最优的直线一定过某条线段的端点. 仔细想想很有道理.如果最终的直线没有过线段的端点的话,那么这条直线就一定可以平移,直 ...
- Oil Deposits
Oil Deposits Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tota ...
- Oil Deposits(dfs)
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission( ...
- 2016HUAS暑假集训训练题 G - Oil Deposits
Description The GeoSurvComp geologic survey company is responsible for detecting underground oil dep ...
- uva 572 oil deposits——yhx
Oil Deposits The GeoSurvComp geologic survey company is responsible for detecting underground oil d ...
随机推荐
- .Net Core with 微服务 - 使用 AgileDT 快速实现基于可靠消息的分布式事务
前面对于分布式事务也讲了好几篇了(可靠消息最终一致性 分布式事务 - TCC 分布式事务 - 2PC.3PC),但是还没有实战过.那么本篇我们就来演示下如何在 .NET 环境下实现一个基于可靠消息的分 ...
- Visual Studio Docker调试端口设置
一.前言 在Visual Studio 调试程序时,Docker中的容器端口和主机端口映射随机生成,导致每次调试都需要修改前端API接口的地址 二.解决方案 1.修改Docker调试启动参数,找到启动 ...
- 每日总结:charcter方法(2021.10.5)
\t 在文中该处插入一个tab键 \b在文中该处插入一个后退键 \n 换行 \r 在文中该处回车 \f 在文中该处插入换页符 方法: isLetter()是否是一个字母 isDigit()是否是一个 ...
- 2021-06-27 & 2021-06-28 集训题解
西克 题目传送门 Description Solution 跟 2021年省选A卷D2T1 一模一样,懒得讲了 不过这个题似乎有点卡空间,所以卡不过去 Code #include <bits/s ...
- LinkedList-常用方法以及双向链表的理解
链表 链表是一种物理存储单元上非连续.非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的. 链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成.每个结点包括两 ...
- Pytorch 实现简单线性回归
Pytorch 实现简单线性回归 问题描述: 使用 pytorch 实现一个简单的线性回归. 受教育年薪与收入数据集 单变量线性回归 单变量线性回归算法(比如,$x$ 代表学历,$f(x)$ 代表收入 ...
- Python常用加密解密算法
MD5加密 简介 这是一种使用非常广泛的加密方式,不可逆的,常见16位和32位一般都是md5 实现 import hashlib data = '你好' print(hashlib.md5(data. ...
- NX Open,怎样取到面的环LOOP
在封装的ufun .NET库里面,对UF_MODL_ask_face_loops这个函数并没有封装,导致我们很多不便,那我们在.NET下怎样才能使用这个函数呢??当然是手动处理一下 Public Fu ...
- VS Code Just My Code Debugging
VS Code Just My Code Debugging VS Code for C++ doesn't support Just My Code Refer here: Add support ...
- webRTC中语音降噪模块ANS细节详解(二)
上篇(webRTC中语音降噪模块ANS细节详解(一))讲了维纳滤波的基本原理.本篇先给出webRTC中ANS的基本处理过程,然后讲其中两步(即时域转频域和频域转时域)中的一些处理细节. ANS的基本处 ...