题目大意:给出一个n*m的矩阵,选出3个不相交的k*k子矩阵,使得子矩阵中元素和最大。(k<=n,m<=1500)

思路:选出的子矩阵有3种情况:横着排三个、竖着排三个、三角状分布(其中有四种朝向),分情况判一判就好了。

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
char B[<<],*S=B,C;int X;
inline int read()
{
while((C=*S++)<''||C>'');
for(X=C-'';(C=*S++)>=''&&C<='';)X=(X<<)+(X<<)+C-'';
return X;
}
#define MN 1500
#define L(i,k,n) for(register int i=k;i<=n;++i)
#define R(i,k,n) for(register int i=n-k;i;--i)
int s[MN+][MN+],f1[MN+][MN+],f2[MN+][MN+],f3[MN+][MN+],f4[MN+][MN+];
int main()
{
fread(B,,<<,stdin);
int n,m,k,x,ans=;
n=read();m=read();k=read();
L(i,,n)L(j,,m)s[i][j]=s[i-][j]+s[i][j-]-s[i-][j-]+read();
L(i,k,n)L(j,k,m)f1[i][j]=max(max(f1[i-][j],f1[i][j-]),s[i][j]-s[i-k][j]-s[i][j-k]+s[i-k][j-k]);
L(i,k,n)R(j,k,m)f2[i][j]=max(max(f2[i-][j],f2[i][j+]),s[i][j+k]-s[i-k][j+k]-s[i][j]+s[i-k][j]);
R(i,k,n)L(j,k,m)f3[i][j]=max(max(f3[i+][j],f3[i][j-]),s[i+k][j]-s[i][j]-s[i+k][j-k]+s[i][j-k]);
R(i,k,n)R(j,k,m)f4[i][j]=max(max(f4[i+][j],f4[i][j+]),s[i+k][j+k]-s[i][j+k]-s[i+k][j]+s[i][j]);
L(i,k<<,n)L(j,k,m)ans=max(ans,f1[i-k][m]+s[i][j]-s[i-k][j]-s[i][j-k]+s[i-k][j-k]+f3[i][m]);
L(j,k<<,m)L(i,k,n)ans=max(ans,f1[n][j-k]+s[i][j]-s[i-k][j]-s[i][j-k]+s[i-k][j-k]+f2[n][j]);
L(i,k,n-k)L(j,k,m-k)ans=max(ans,max(max(f1[i][j]+f2[i][j]+f3[i][m],f1[i][j]+f3[i][j]+f2[n][j]),
max(f2[i][j]+f4[i][j]+f1[n][j],f3[i][j]+f4[i][j]+f1[i][m])));
printf("%d",ans);
}

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

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

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

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

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

  3. [BZOJ1177][Apio2009]Oil

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

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

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

  5. 【BZOJ 1177】 [Apio2009]Oil

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

  6. 【BZOJ 1177】【APIO 2009】Oil

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

  7. [BZOJ 1177] Oil

    Link:https://www.lydsy.com/JudgeOnline/problem.php?id=1177 Solution: 相当于将大矩形分为3块,取每块中最大的正方形 对于此类分成几块 ...

  8. BZOJ 1177 Oil(特技枚举)

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

  9. BZOJ 1179: [Apio2009]Atm( tarjan + 最短路 )

    对于一个强连通分量, 一定是整个走或者不走, 所以tarjan缩点然后跑dijkstra. ------------------------------------------------------ ...

随机推荐

  1. 实验四Java Android简易开发

    实验准备 Android Studio下载 Android Studio安装 实验内容 Android Stuidio的安装测试 Android Stuidio的安装测试: 参考<Java和An ...

  2. 学号:201621123032 《Java程序设计》第14周学习总结

    1:本周学习总结 2:使用数据库技术改造你的系统 2.1:简述如何使用数据库技术改造你的系统.要建立什么表?截图你的表设计. 建立一个图书馆的表 建立读者用户个人的借书信息表---但是目前没有办法做到 ...

  3. Linux学习--线程控制

    关于线程控制,主要就是几个模块,我们一个一个消灭.消化: 一.线程创建: 1.先来看看在Linux环境下的线程创建函数: 分析:意思很明显: 1.函数名是 pthread_create  : 2.功能 ...

  4. 网上找的hadoop面试题目及答案

    1.Hadoop集群可以运行的3个模式? 单机(本地)模式 伪分布式模式全分布式模式2. 单机(本地)模式中的注意点? 在单机模式(standalone)中不会存在守护进程,所有东西都运行在一个JVM ...

  5. 不看就亏了:DELL EqualLogic PS6100详解及数据恢办法

    DELL EqualLogic PS6100采用虚拟ISCSI SAN阵列,为远程或分支办公室.部门和中小企业存储部署带来企业级功能.智能化.自动化和可靠性,支持VMware.Solaris.Linu ...

  6. VS Code 常用命令记录

    1. 创建解决方案 例:dotnet new sln -o HelloWorld.Solutions 其中 -o 表示输出文件夹 2.创建类库.web.mvc.webapi等项目 例:dotnet n ...

  7. JAVA_SE基础——66.StringBuffer类 ③

    如果需要频繁修改字符串 的内容,建议使用字符串缓冲 类(StringBuffer). StringBuffer 其实就是一个存储字符 的容器. 容器的具备 的行为 常用方法 String  增加 ap ...

  8. LDAP是什么

    LDAP的英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP.LDAP目录服务是一种特殊的数据库系统,其专门针对读取,浏览和搜索操作进行了特定的 ...

  9. ssh整合之三hibernate和spring整合

    1.拷贝我们的spring事务控制所需的jar包 2.在spring容器中配置我们的hibernateTemplate以及事务管理器 <?xml version="1.0" ...

  10. c#**************

    ddfbvbb c v我wossssssss