【题目链接】 http://www.lydsy.com/JudgeOnline/problem.php?id=1177

【题目大意】

  给出一个矩阵,从中选出3个k*k且不相交的矩阵,使得其总和最大

【题解】

  只要处理四个方向的前缀最大值,就可以分类比较得到答案。

【代码】

#include <cstdio>
#include <algorithm>
using namespace std;
#define rep(i,a,b) for(int i=a;i<=b;i++)
#define red(i,a,b) for(int i=b;i>=a;i--)
const int N=2600;
int n,m,k,x,s[N][N],a[N][N],b[N][N],c[N][N],d[N][N],ans=0;
int main(){
scanf("%d%d%d",&n,&m,&k);
rep(i,1,n)rep(j,1,m){scanf("%d",&x);s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+x;}
red(i,k,n)red(j,k,m)s[i][j]-=s[i-k][j]+s[i][j-k]-s[i-k][j-k];
rep(i,k,n)rep(j,k,m)a[i][j]=max(s[i][j],max(a[i-1][j],a[i][j-1]));
rep(i,k,n)red(j,k,m)b[i][j]=max(s[i][j],max(b[i-1][j],b[i][j+1]));
red(i,k,n)rep(j,k,m)c[i][j]=max(s[i][j],max(c[i+1][j],c[i][j-1]));
red(i,k,n)red(j,k,m)d[i][j]=max(s[i][j],max(d[i+1][j],d[i][j+1]));
rep(i,k,n-k)rep(j,k,m-k)ans=max(ans,a[i][j]+b[i][j+k]+c[i+k][m]);
rep(i,k,n-k)rep(j,k+k,m)ans=max(ans,b[i][j]+d[i+k][j]+a[n][j-k]);
rep(i,k+k,n)rep(j,k,m-k)ans=max(ans,c[i][j]+d[i][j+k]+a[i-k][m]);
rep(i,k,n-k)rep(j,k,m-k)ans=max(ans,a[i][j]+c[i+k][j]+b[n][j+k]);
rep(i,k,n)rep(j,k+k,m-k)ans=max(ans,s[i][j]+a[n][j-k]+b[n][j+k]);
rep(i,k+k,n-k)rep(j,k,m)ans=max(ans,s[i][j]+a[i-k][m]+c[i+k][m]);
printf("%d\n",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

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

  3. BZOJ 1002 FJOI2007 轮状病毒 递推+高精度

    题目大意:轮状病毒基定义如图.求有多少n轮状病毒 这个递推实在是不会--所以我选择了打表找规律 首先执行下面程序 #include<cstdio> #include<cstring& ...

  4. bzoj[HNOI2015]亚瑟王 - 递推与动规 - 概率与期望

    [bzoj4008][HNOI2015]亚瑟王 2015年4月22日3,2991 Description 小 K 不慎被 LL 邪教洗脑了,洗脑程度深到他甚至想要从亚瑟王邪教中脱坑. 他决定,在脱坑之 ...

  5. HYSBZ(BZOJ) 4300 绝世好题(位运算,递推)

    HYSBZ(BZOJ) 4300 绝世好题(位运算,递推) Description 给定一个长度为n的数列ai,求ai的子序列bi的最长长度,满足bi&bi-1!=0(2<=i<= ...

  6. bzoj 4161 Shlw loves matrixI——常系数线性齐次递推

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4161 还是不能理解矩阵…… 关于不用矩阵理解的方法:https://blog.csdn.ne ...

  7. 【BZOJ 1019】【SHOI2008】汉诺塔(待定系数法递推)

    1019: [SHOI2008]汉诺塔 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 559  Solved: 341[Submit][Status] ...

  8. 【BZOJ】1089: [SCOI2003]严格n元树(递推+高精度/fft)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1089 题意:求深度为d的n元树数目.(0<n<=32, 0<=d<=16) ...

  9. 【递推】BZOJ 3930: [CQOI2015]选数

    Description 我们知道,从区间[L,H](L和H为整数)中选取N个整数,总共有(H-L+1)^N种方案.小z很好奇这样选出的数的最大公约数的规律,他决定对每种方案选出的N个整数都求一次最大公 ...

随机推荐

  1. Java提高学习之Object(5)

    字符串形式的表现 Q1:toString() 方法实现了什么功能?A1:toString() 方法将根据调用它的对象返回其对象的字符串形式,通常用于debug. Q2:当 toString() 方法没 ...

  2. Java格式化输出

    Java的格式化输出等同于String.Format,与C有很大的相似,比如 System.out.printf("%8.2f", x);在printf中,可以使用多个参数,例如: ...

  3. Cmd批处理语法实例

    @echo on :循环获取指定目录下以php为后缀的文件,且重命名后缀为html :for /r "E:\aaa\web" %%v in (*.php) do ren " ...

  4. Nand ECC校验和纠错原理及2.6.27内核ECC代码分析

    ECC的全称是Error Checking and Correction,是一种用于Nand的差错检测和修正算法.如果操作时序和电路稳定性不存在问题的话,NAND Flash出错的时候一般不会造成整个 ...

  5. qutIm编译

    官网:http://www.qutim.org/ 原文地址:http://wiki.qutim.org/en/building_from_git 依赖: Qt4-dev 4.7:http://qt-p ...

  6. 保存网页为图片——滚动截取IE(WebBrowse)

    对IE进行编程一直觉得是相当可怕的事情,里面的接口.函数.事件之多,解释之乱,需要了解的方方面面知识之博,让我仿佛看到了微软就是造物主,因为它已成功制造了这样的混沌,弄就了宇宙的初始状态…… 近来做个 ...

  7. 浅析指针(pointer)与引用(reference)

    在c++函数中,形式参数用引用和用指针都可以起到在被调用函数中改变调用函数的变量的作用.什么时候用引用作参数?什么时候用指针作参数呢 void function (int *ptr); void fu ...

  8. opensatck 在启动的时候注入额外的信息

    在配置ceph的时候建议使用metadata/cloud-init来注入额外的信息. https://raymii.org/s/tutorials/Automating_Openstack_with_ ...

  9. Android的UI两大基石

        说到Android的UI就不得不从一切的开始View开始说.     让我们从Android Developer上的View的Overview和UI Overview来开始吧.     Cla ...

  10. codeigniter使用mongodb/redis

    ci2.x版本,使用mongodb,需要安装pecl-php-mongo扩展(github上很多扩展已不可用,找到个可用版本纪录于此),添加到php.ini中 使用如下 public function ...