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

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

调试了很久……

主要是细节太多了

#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. hexo+github page +markdown问题汇总

    1.没有权限提交 解决办法:把git版本由2.x改为1.9 未完待续

  2. 爬取文件时,对已经操作过的URL进行过滤

    爬取文件时,对已经操作过的URL进行过滤 1.创建过滤规则文件filter.py在spiders同级目录 class RepeatUrl: def __init__(self): self.visit ...

  3. 视频H265格式压缩,软件压缩方法,硬件的没有条件,没法测试。

    libx265软压c:/ffmpeg/ffmpeg.exe -i input.mp4 -c:v libx265 -preset:v fast output.mp4 原文件大小:610.87mb 目标文 ...

  4. 报错ERR_CONNECTION_REFUSED,如何解决(原创)

    当我访问我的一个后天地址的时候,突然出现了ERR_CONNECTION_REFUSED,但是之前是可以访问的. 我先ping了下这个网址,发现是OK的 然后我想可能是80端口有问题,也就是说可能是WE ...

  5. 【Android】Android 监听apk安装替换卸载广播

    [Android]Android 监听apk安装替换卸载广播 首先是要获取应用的安装状态,通过广播的形式 以下是和应用程序相关的Broadcast Action ACTION_PACKAGE_ADDE ...

  6. 事件监听addEventListener----attachEvent

    第一:简单的通用方法(IE && FF) window.onload = function(){ var oDiv = document.getElementById("J_ ...

  7. Codeforces 1016G Appropriate Team 数论 FWT

    原文链接https://www.cnblogs.com/zhouzhendong/p/CF1016G.html 题目传送门 - CF1016G 题意 给定 $n,x,y$ ,以及一个含有 $n$ 个元 ...

  8. TCP/UDP 协议,和 HTTP、FTP、SMTP,区别及应用场景

    一.OSI 模型 OSI 模型主要作为一个通用模型来做理论分析,而TCP/IP 协议模型是互联网的实际通讯协议,两者一般做映射分析,以下不做严格区分和声明(好吧,比较懒): OSI 整个模型层次大致可 ...

  9. 003 使用SpringMVC开发restful API--查询用户

    一:介绍说明 1.介绍 2.restful api的成熟度 二:编写Restful API的测试用例 1.引入spring的测试框架 在effective pom中查找 2.新建测试包,测试类 3.测 ...

  10. 010 pandas的DataFrame

    一:创建 1.通过二维数组进行创建 2.取值 取列,取位置的值 3.切片取值 这个和上面的有些不同,这里先取行,再取列 4.设定列索引 这里使用的行索引与上面不同. 5.通过字典的方式创建 6.索引 ...