这道题用二维前缀和可以做

难度还不算高,细节需要注意

调试了很久……

主要是细节太多了

#include<bits/stdc++.h>
using namespace std;
#define max(a,b) (a>b?a:b)
#define min(a,b) (a<b?a:b)
#define ll long long
#define N 1505
inline int read() {
int f = , x = ; char ch;
do { ch = getchar(); if (ch == '-')f = -; } while (ch<'' || ch>'');
do { x = x * + ch - ''; ch = getchar(); } while (ch >= ''&&ch <= '');
return f * x;
}
int m, n, k, ans;
int s[N][N],a[N][N],b[N][N],c[N][N],d[N][N];
int main()
{
n = read(), m = read(), k = read();
for (int i = ; i <= n; i++)
{
for (int j = ; j <= m; j++)
{
int t = read();
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; j >= k; j--)
b[i][j] = max(s[i][j], max(b[i][j + ], b[i - ][j]));
for (int i = n; i >= k; i--)
for (int j = k; j <= m; j++)
c[i][j] = max(s[i][j], max(c[i][j - ], c[i + ][j]));
for (int i = n; i >= k; i--)
for (int j = m; j >= k; j--)
d[i][j] = max(s[i][j], max(d[i][j + ], d[i + ][j])); for (int i = k; i <= n - k; i++)//
for (int j = k; j <= m - k; j++)
ans = max(ans, a[i][j] + b[i][j + k] + c[i + k][m]);
for (int i = k + k; i <= n; i++)//
for (int j = k; j <= m - k; j++)
ans = max(ans, c[i][j] + d[i][j + k] + a[i - k][m]);
for (int i = k + k; i <= n - k; i++)//
for (int j = k; j <= m; j++)
ans = max(ans, s[i][j] + a[i - k][m] + c[i + k][m]);
for (int i = k; i <= n - k; i++)//
for (int j = k; j <= m - k; j++)
ans = max(ans, a[i][j] + c[i + k][j] + b[n][j + k]);
for (int i = k; i <= n - k; i++)//
for (int j = k + k; j <= m; j++)
ans = max(ans, a[n][j - k] + b[i][j] + d[i + k][j]);
for (int i = k; i <= n - k; i++)//
for (int j = k + k; j <= m - k; j++)
ans = max(ans, s[i][j] + a[n][j - k] + b[n][j + k]);
cout << ans;
return ;
}

[P3625][APIO2009]采油区域 (前缀和)的更多相关文章

  1. bzoj1177&p3625 [APIO2009]采油区域p[大力讨论]

    我好菜菜啊. 给定矩形,从中选出三个边长K的正方形互不重叠,使得覆盖到的数总和最大. 想的时候往dp上钻去了..结果一开始想了一个错的dp,像这样 /************************* ...

  2. 洛谷P3625 - [APIO2009]采油区域

    Portal Description 给出一个\(n\times m(n,m\leq1500)\)的矩阵,从中选出\(3\)个互不相交的\(k\times k\)方阵,使得被选出的数的和最大. Sol ...

  3. [SOJ #686]抢救(2019-11-7考试)/[洛谷P3625][APIO2009]采油区域

    题目大意 有一个\(n\times m\)的网格,\((x,y)\)权值为\(a_{x,y}\),要求从中选取三个不相交的\(k\times k\)的正方形使得它们权值最大.\(n,m,k\leqsl ...

  4. 洛谷 P3625 [APIO2009]采油区域【枚举】

    参考:https://blog.csdn.net/FAreStorm/article/details/49200383 没有技术含量但是难想难写,枚举情况图详见参考blog懒得画了 bzoj蜜汁TTT ...

  5. [APIO2009]采油区域

    题目描述 Siruseri 政府决定将石油资源丰富的 Navalur 省的土地拍卖给私人承包商以 建立油井.被拍卖的整块土地为一个矩形区域,被划分为 M×N 个小块. Siruseri 地质调查局有关 ...

  6. Luogu 3625 [APIO2009]采油区域

    想了很久的dp,看了一眼题解之后感觉自己被安排了. 发现从一个矩形中选择三个不相交的正方形一共只有六种取法. 那么我们可以处理出四个值: $f_{i, j}$分别表示以$(i, j)$为右下角,左下角 ...

  7. Java实现 蓝桥杯VIP 算法训练 采油区域

    算法训练 采油区域 时间限制:2.0s 内存限制:512.0MB 提交此题 查看参考代码 采油区域 Siruseri政府决定将石油资源丰富的Navalur省的土地拍卖给私人承包商以建立油井.被拍卖的整 ...

  8. BZOJ1177:[APIO2009]Oil(枚举,前缀和)

    Description 采油区域 Siruseri政府决定将石油资源丰富的Navalur省的土地拍卖给私人承包商以建立油井.被拍卖的整块土地为一个矩形区域,被划分为M×N个小块. Siruseri地质 ...

  9. Noip 训练指南

    目录 Noip 训练指南 图论 数据结构 位运算 期望 题解 Noip 训练指南 目前完成 \(4 / 72\) 图论 [ ] 跳楼机 [ ] 墨墨的等式 [ ] 最优贸易 [ ] 泥泞的道路 [ ] ...

随机推荐

  1. 步步为营102-Css样式加个版本

    背景:当系统发布后修改了css样式,由于浏览器有缓存,所以会造成css样式无效.可通过在css中添加版本号来解决 1 修改css引用 <link rel="stylesheet&quo ...

  2. js基本类型和字符串的具体应用

    变量 JavaScript 是一种弱类型语言,javascript的变量类型由它的值来决定. 定义变量需要用关键字 'var' var a = 123; var b = 'asd'; //同时定义多个 ...

  3. Ueditor设置默认字体、字号、行间距,添加字体种类(转)

    Ueditor默认字体.字号.行间距的修改: ueditor默认字号是16号,默认字体为sans-serif,默认行间距为5px,如下图所示: 首先,修改ueditor.all.js文件中如上图红框中 ...

  4. Visual Studio 中使用万能头文件 #include <bits/stdc++.h>

    最近开始使用VS,之前用的DEV C++软件可直接使用 #include <bits/stdc++.h>  ,但VS中并没有,为了使用方便,可直接在VS中添加此头文件,方法如下: 1.在安 ...

  5. Centos7X部署Zabbix监控

    一:yum安装LAMP环境 zabbix-server端防火墙配置(可以选择iptables -F清空) iptables -A INPUT -m state --state NEW -m tcp - ...

  6. html5的audio实现高仿微信语音播放效果(实际项目)

    HTML部分: <div class="tab-pane fade dialog-record" id="dialogRecord"> <vo ...

  7. Java基础总结02:环境变量的配置

    (一)Windows系统下配置环境变量 ※在"系统变量"中设置3项属性JAVA_HOME.PATH.CLASSPATH(JDK1.5之后此项属性不必再配),若已存在则点击" ...

  8. vim 命令图解

    vim 命令,vim是一个很好的编辑工具,下面为大家介绍一下vim入门基本命令. 方法/步骤   1 [vim 命令-启动vimtutor]:执行命令:vimtutor.vimtutor是vim使用入 ...

  9. Service插件化解决方案

    --摘自<android插件化开发指南> 1.ActivityThread最终是通过Instrumentation启动一个Activity的.而ActivityThread启动Servic ...

  10. Binder原理

    --摘自<android插件化开发指南> 1.Binder分为Client和Server两个进程: client和server是相对的.谁发消息,谁就是client:谁接收消息,谁就是se ...