[P3625][APIO2009]采油区域 (前缀和)
这道题用二维前缀和可以做
难度还不算高,细节需要注意
调试了很久……
主要是细节太多了
#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]采油区域 (前缀和)的更多相关文章
- bzoj1177&p3625 [APIO2009]采油区域p[大力讨论]
我好菜菜啊. 给定矩形,从中选出三个边长K的正方形互不重叠,使得覆盖到的数总和最大. 想的时候往dp上钻去了..结果一开始想了一个错的dp,像这样 /************************* ...
- 洛谷P3625 - [APIO2009]采油区域
Portal Description 给出一个\(n\times m(n,m\leq1500)\)的矩阵,从中选出\(3\)个互不相交的\(k\times k\)方阵,使得被选出的数的和最大. Sol ...
- [SOJ #686]抢救(2019-11-7考试)/[洛谷P3625][APIO2009]采油区域
题目大意 有一个\(n\times m\)的网格,\((x,y)\)权值为\(a_{x,y}\),要求从中选取三个不相交的\(k\times k\)的正方形使得它们权值最大.\(n,m,k\leqsl ...
- 洛谷 P3625 [APIO2009]采油区域【枚举】
参考:https://blog.csdn.net/FAreStorm/article/details/49200383 没有技术含量但是难想难写,枚举情况图详见参考blog懒得画了 bzoj蜜汁TTT ...
- [APIO2009]采油区域
题目描述 Siruseri 政府决定将石油资源丰富的 Navalur 省的土地拍卖给私人承包商以 建立油井.被拍卖的整块土地为一个矩形区域,被划分为 M×N 个小块. Siruseri 地质调查局有关 ...
- Luogu 3625 [APIO2009]采油区域
想了很久的dp,看了一眼题解之后感觉自己被安排了. 发现从一个矩形中选择三个不相交的正方形一共只有六种取法. 那么我们可以处理出四个值: $f_{i, j}$分别表示以$(i, j)$为右下角,左下角 ...
- Java实现 蓝桥杯VIP 算法训练 采油区域
算法训练 采油区域 时间限制:2.0s 内存限制:512.0MB 提交此题 查看参考代码 采油区域 Siruseri政府决定将石油资源丰富的Navalur省的土地拍卖给私人承包商以建立油井.被拍卖的整 ...
- BZOJ1177:[APIO2009]Oil(枚举,前缀和)
Description 采油区域 Siruseri政府决定将石油资源丰富的Navalur省的土地拍卖给私人承包商以建立油井.被拍卖的整块土地为一个矩形区域,被划分为M×N个小块. Siruseri地质 ...
- Noip 训练指南
目录 Noip 训练指南 图论 数据结构 位运算 期望 题解 Noip 训练指南 目前完成 \(4 / 72\) 图论 [ ] 跳楼机 [ ] 墨墨的等式 [ ] 最优贸易 [ ] 泥泞的道路 [ ] ...
随机推荐
- 集腋成裘-01 sublime常用的快捷键
sublime使用的快捷键 1:Html 结构代码 : Html:xt + tab键 2:补全标签代码 : tab键 3:快速复制一行代码 : Ctrl+shift+d 4:快速选中一行代码 : ...
- Linux下Nginx安装/启动/重启/停止
Nginx是高性能的web服务器也是非常好用反向代理服务器,可以实现负载均衡,动静分离等策略,在linux下用的非常多.下面是下载地址 http://nginx.org/en/download.h ...
- Windows Phone MultiBinding :Cimbalino Toolkit
在WPF和WIN8中是支持MultiBinding 这个有啥用呢,引用下MSDN的例子http://msdn.microsoft.com/en-us/library/system.windows.da ...
- fatal error c1001 编译器中发生内部错误 OpenMesh6.3
Internal Compiler Error VS 2015 Update1 VS2015 Update1 编译OpenMesh的额代码时发生错误 fatal error c1001 编译器中发生内 ...
- python从零安装
一 python 1.安装python https://www.python.org/ 环境变量path添加 ;C:\Python27;C:\Python27\Lib\site-packages;C: ...
- awk常见用法
awk作为linux字符搜索,结果统计的实用工具,其在linux日常运维中有着很多的巧妙运用.下面就来技术一下刚刚学到的技巧 #awk命令统计文件夹下所有文件大小 ls -l |awk 'BEGIN ...
- 基于spring security 实现前后端分离项目权限控制
前后端分离的项目,前端有菜单(menu),后端有API(backendApi),一个menu对应的页面有N个API接口来支持,本文介绍如何基于spring security实现前后端的同步权限控制. ...
- sqlserver中的数据转换与子查询
数据类型转换 --cast转换 select CAST(1.23 as int) select CAST(1.2345 as decimal(18,2)) select CAST(123 as var ...
- Codeforces 844F Anti-Palindromize 最小费用流
Anti-Palindromize 想到网络流就差不多了, 拆拆点, 建建边. #include<bits/stdc++.h> #define LL long long #define f ...
- python3对于时间的处理
1.获取当前时间戳 float_time = time.time() 2.格式化当前时间 #格式化当前时区时间 now_time = time.strftime('%Y-%m-%d %H:%M:%S' ...