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块  -------->  枚举分割线

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

最新文章

  1. 【原】iOS 同时重写setter和getter时候报错:Use of undeclared identifier &#39;_name&#39;;did you mean &#39;name&#39;
  2. pic
  3. 简单的 JSON 对象进行深拷贝最简单的方法
  4. MVC下HtmlHelper自带BeginForm表单提交与异步Ajax请求
  5. 【面试题】BD
  6. JavaScript为input/textarea自定义hover,focus效果
  7. hdu 4712 Hamming Distance(随机数法)
  8. linux c 实现大数相乘
  9. Python 基础【第三篇】输入和输出
  10. BZOJ 1502 月下柠檬树(simpson积分)
  11. php 可逆加密方法
  12. Davinci DM6446开发攻略——DSP开发工程建立
  13. mybatis 中的缓冲
  14. Android中设置控件的背景颜色的方式整理
  15. Java Core - 序列化和反序列化
  16. 【转】MySQL用户管理及SQL语句详解
  17. matlab知识点汇集
  18. JAVA课程设计——多源教学数据管理系统
  19. 解决:在php配置文件路径下,添加php.ini之后,测试页面无法显示
  20. PHP下的浮点运算不准的解决办法

热门文章

  1. javascript 随机数区间
  2. BZOJ2097: [Usaco2010 Dec]Exercise 奶牛健美操 贪心+伪树dp+二分
  3. vector 基础2
  4. 运动目标前景检测之ViBe源代码分析
  5. postfix导致maillog填满磁盘空间的巨坑!
  6. iOS 全局变量设置的几种方式~
  7. 动态规划:树形DP
  8. 【Foreign】旅行路线 [倍增]
  9. 「6月雅礼集训 2017 Day2」C
  10. 在DirectX11下用Stencil Buffer绘制可视化Depth Complexity