[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 ...
随机推荐
- 从零入门 Serverless | 函数计算如何粘合云服务,提供端到端解决方案
作者 | 西流 阿里云技术专家 导读:阿里云 Serverless 产品函数计算可以作为粘合剂,串联其他云服务提供端到端解决方案,从而简化编程模型,快速实现最上层的业务目标. 传统单体应用的拆解 首先 ...
- 创建HTML文档
目录 创建HTML文档 构筑基本的文档结构 DOCTYPE元素 DOCTYPE元素 代码清单1 使用DOCTYPE元素 html元素 html元素 代码清单2 使用html元素 head元素 head ...
- pytest执行时mian函数传参
在代码中执行pytest可以通过main函数 加参数来指定运行规则时,参数需要放在列表或者元祖中 # pytest.main(["--html=report.html"]) # p ...
- leetcode347 —— n中topK && PriorityQueue(Heap) && Map遍历
题目要求:求前K个最频繁出现的数字. 1.很容易想到,使用HashMap<Integer,Integer>来存储<number,frequency>键值对 1 int n = ...
- 【UE4 C++】Print、Delay、ConsoleCommand
基于UKismetSystemLibrary PrintString /** * Prints a string to the log, and optionally, to the screen * ...
- ORB_SLAM3 -- 配置安装
安装环境 Ubuntu20.04 ORB_SLAM3依赖项安装 opencv3 ORB_SLAM3可用opencv3或opencv4编译,作者这里安装测试了opencv3 Step1: 安装openc ...
- USART 硬件流控
流控的概念源于 RS232 这个标准,在 RS232 标准里面包含了串口.流控的定义.大家一定了解,RS232 中的"RS"是Recommend Standard 的缩写,即&qu ...
- stm32学习笔记之串口通信
在基础实验成功的基础上,对串口的调试方法进行实践.硬件代码顺利完成之后,对日后调试需要用到的printf重定义进行调试,固定在自己的库函数中. b) 初始化函数定义: void USART_Confi ...
- 因为一个小小的Integer问题导致阿里一面没过,遗憾!
面试题:new Integer(112)和Integer.valueOf(112)的区别 面试官考察点猜想 这道题,考察的是对Integer这个对象原理的理解,关于这道题的变体有很多,我们会一一进行分 ...
- HTML基础强化
1.如何理解HTML? HTML类似于一份word"文档" 描述文档的"结构" 有区块和大纲 2.对WEB标准的理解? Web标准是由一系列标准组合而成.一个网 ...