【题目链接】 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. sql CAST用法

    (1).CAST()函数的参数是一个表达式,它包括用AS关键字分隔的源值和目标数据类型.以下例子用于将文本字符串'12'转换为整型: ' AS int) (2).返回值是整型值12.如果试图将一个代表 ...

  2. android process bar 几种style

    process bar 圆形style记录 1. style="?android:attr/progressBarStyleSmall" //根据主题变颜色 2. holo 主题下 ...

  3. android 添加左右滑屏手势

    今天要在自己的项目中添加左右滑动,实现日期的加减(原来已经做了加减按键).滑动在一个中间的layout中进行 思路:添加左右划屏幕判断,得到判断后模拟加减按键按下. 模拟按键按下用 mbotton.p ...

  4. 在Windows平台下安装与配置Memcached的方法分享

    Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态.数据库驱动网站的速度.Memcached ...

  5. Oracle EBS-SQL (SYS-15):查询表空间2.sql

    /*表空间查询*/ SELECT d.status "状态", d.tablespace_name "名称", d.contents "类型" ...

  6. 计算机世界的道(C/ASM)生一(OS),一生二(API),二生万象(MFC/COM)——学包装技术的程序员将来会损失比较大,因为不了解本质,一旦包装过时就会被淘汰

    道生一,一生二,二生万象.OO的思想就是抽象,万象归宗,化繁为简.99%的程序员使用OO,或者所谓的类库的目的就是好用,不必了解内部实现就可以直接达到所期望的结果.这时一种生产力的进步,一种流水线式半 ...

  7. yum subversion puppet puppet-server

    yum -y install ruby ruby-libs ruby-shadow yum -y install puppet puppet-server facter yum -y install ...

  8. 10要点解决IE6兼容性问题

    1.使用声明 你必须经常在html网页头部放置一个声明,推荐使用严格的标准.例如 <!DOCTYPEHTMLPUBLIC“-//W3C//DTDHTML4.01//EN”   "htt ...

  9. C++ *max_element函数找最大元素 *min_element函数找最小元素 STL算法(转)

    http://blog.sina.com.cn/s/blog_6f3a860501019z1f.html #include<iostream> #include<algorithm& ...

  10. Cocos2d—X游戏开发之CCTableView详解(十一)

    本来很早就想写关于CCTableView的文章,但是在基本功能实现之后呢,项目需求增加导致对这个控件的研究必须更加深入一点. 好的,现在开始介绍一下这个控件,在Cocos2d—X引擎中,这是一个仿制i ...