Link:https://www.lydsy.com/JudgeOnline/problem.php?id=1177

Solution:

相当于将大矩形分为3块,取每块中最大的正方形

对于此类分成几块的题目,要想到枚举分割线

一共只有这6种情况:

我们只要先预处理左上左下右上右下四个方向最大答案的前缀和,

再对于每种情况枚举分割线即可

对于最左边的两种情况,只要将中间一列的宽度保证为k即可

Code:

#include <bits/stdc++.h>

using namespace std;
const int MAXN=+; int n,m,k,t,res=,s[MAXN][MAXN],a[MAXN][MAXN],b[MAXN][MAXN],c[MAXN][MAXN],d[MAXN][MAXN]; int main()
{
scanf("%d%d%d",&n,&m,&k);
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
scanf("%d",&t),s[i][j]=s[i-][j]+s[i][j-]-s[i-][j-]+t;
for(int i=n;i>=k;i--) for(int j=m;j>=k;j--) s[i][j]-=s[i-k][j]+s[i][j-k]-s[i-k][j-k]; for(int i=k;i<=n;i++) for(int j=k;j<=m;j++) a[i][j]=max(s[i][j],max(a[i-][j],a[i][j-]));
for(int i=k;i<=n;i++) for(int j=m-k+;j>=;j--) b[i][j]=max(s[i][j+k-],max(b[i-][j],b[i][j+]));
for(int i=n-k+;i>=;i--) for(int j=k;j<=m;j++) c[i][j]=max(s[i+k-][j],max(c[i+][j],c[i][j-]));
for(int i=n-k+;i>=;i--) for(int j=m-k+;j>=;j--) d[i][j]=max(s[i+k-][j+k-],max(d[i+][j],d[i][j+])); for(int i=k;i<=n;i++) for(int j=k;j<=m;j++) res=max(res,a[i][j]+b[i][j+]+c[i+][m]);
for(int i=n-k+;i>=;i--) for(int j=k;j<=m;j++) res=max(res,c[i][j]+d[i][j+]+a[i-][m]);
for(int i=k;i<=n;i++) for(int j=k;j<=m;j++) res=max(res,a[i][j]+c[i+][j]+d[][j+]);
for(int i=k;i<=n;i++) for(int j=m-k+;j>=;j--) res=max(res,b[i][j]+d[i+][j]+c[][j-]); for(int i=*k;i<=n;i++) for(int j=k;j<=m;j++) res=max(res,s[i][j]+a[i-k][m]+c[i+][m]);
for(int j=*k;j<=m;j++) for(int i=k;i<=n;i++) res=max(res,s[i][j]+a[n][j-k]+b[n][j+]); printf("%d",res);
return ;
}

Review:

由求三块权值和最大的不交叉的正方形  ------->  将矩形分为3块  -------->  枚举分割线

碰到求不相交的最值问题时,想到切割+枚举切割线的方法

[BZOJ 1177] Oil的更多相关文章

  1. BZOJ 1177 Oil(特技枚举)

    对于三个正方形的位置一共有六种情况. 预处理出(i,j)左上角,左下角,右上角,右下角区域内最大权值的正方形. 枚举分界线更新答案. 刚开始想了一个错误的DP也是蠢啊. #include<set ...

  2. 枚举(分类讨论):BZOJ 1177: [Apio2009]Oil

    1177: [Apio2009]Oil Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 1477  Solved: 589[Submit] Descri ...

  3. 【BZOJ 1177】【APIO 2009】Oil

    http://www.lydsy.com/JudgeOnline/problem.php?id=1177 前缀和优化,时间复杂度$O(nm)$ 因为数据不全,快速读入会导致RE,切记! #includ ...

  4. BZOJ 1177 [Apio2009]Oil(递推)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1177 [题目大意] 给出一个矩阵,从中选出3个k*k且不相交的矩阵,使得其总和最大 [ ...

  5. [BZOJ]1177: [Apio2009]Oil

    题目大意:给出一个n*m的矩阵,选出3个不相交的k*k子矩阵,使得子矩阵中元素和最大.(k<=n,m<=1500) 思路:选出的子矩阵有3种情况:横着排三个.竖着排三个.三角状分布(其中有 ...

  6. 【BZOJ 1177】 [Apio2009]Oil

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 如上图. 显然如果三个正方形.只可能是上面的情况. 则可以处理一下左上角.右上角.左下角.右下角的前缀最大正方形(dp),以及以某一 ...

  7. 【BZOJ】【1177】【APIO2009】Oil

    DP 找出三个正方形,可以转化为将整个油田切成三个矩形块,每块中各找一个正方形区域,切的形式只有6种,分类更新ans即可 题解:http://trinklee.blog.163.com/blog/st ...

  8. Week Two

    2018.12.3: 1.[BZOJ 4819] 2.[BZOJ 4827] 3.[P1919] 4.[FFT模板] 2018.12.4: 1.[NTT] 2.[MTT(CRT)] 3.[MTT(my ...

  9. BZOJ 4614 【Wf2016】 Oil

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

随机推荐

  1. ng双向数据绑定

    http://blog.csdn.net/callmekongkong/article/details/54601585

  2. 使用fuser查询文件、目录、socket端口的占用进程

    fuser可用于查询文件.目录.socket端口和文件系统的使用进程 1.查询文件和目录使用者 fuser最基本的用法是查询某个文件或目录被哪个进程使用: # fuser -v ./          ...

  3. IDEA 使用maven创建web项目,打包war时不会创建class文件

    使用maven创建项目后我有创建了个src的目录,导致maven编译不能识别我创建的src文件下的Java文件 修改这样后就可以识别编译Java文件 今天又给自己挖了个坑.......

  4. jquery从零起步学

    html: <HTML> <head> <meta http-equiv="content-type" content="text/html ...

  5. (转)Django常用命令

    转自GoodSpeed,http://www.cnblogs.com/cacique/archive/2012/09/30/2709145.html . . . . .

  6. js闭包,原型,作用域等再一次理解

    要理解闭包,原型等,首先要理解作用域 作用域:就是函数在定义的时候创建的,用于寻找使用到的变量的值的一个索引,而他内部的规则是,把函数自身的本地变量放在最前面,把自身的父级函数中的变量放在其次,把再高 ...

  7. 文本区 JTextArea 的使用

    文本区JTextArea是对多行文本进行编辑的组件,用空字符来控制文本的格式.eg:"\n"为换行,"\t"为插入一个Tab字符. 文本去JTextArea的常 ...

  8. C# MVC 页面面包屑以及相应的权限验证操作

    一.特性类 /// <summary> /// 访问权限控制属性. /// </summary> [AttributeUsage(AttributeTargets.Method ...

  9. 前端开发各种cross之cross domain

    作为一个苦逼前端开发工程师,不得不面对各种cross,比如面对五花八门的浏览器我们必须cross browser,面对各种终端,我们必须cross device,在这么多年的前端开发经历中,在不同的域 ...

  10. algorithm ch15 FastWay

    这是DP最基础的一个问题,刚开始学习这一块,实现了一下,不要黑我巨长的参数表,新手. 代码如下: void FastWay(int l1[], int l2[], int e1, int e2, in ...