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

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

调试了很久……

主要是细节太多了

#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. Idea和PyCharm激活破解

    1. 先去百度去官网下载专业版IDE, Idea 和PyCharm激活方法一样 2. 下载破解包, 点击下载 3. 将下载的jar包放到这个安装目录的bin目录下面 4. 在bin目录下面的文件pyc ...

  2. Redis监控和告警

    https://blog.csdn.net/isoleo/article/details/52981140

  3. springboot调用http方式

    1.httpclient 2.okhttp 3.feign 安装Gradle包 compile 'org.springframework.cloud:spring-cloud-starter-open ...

  4. H5利用pattern属性和oninvalid属性验证表单

    HTML代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <ti ...

  5. selenium相关:通过location 和 size 获取元素所在像素位置和尺寸,截取图片ROI

    1.实验 #https://captcha.luosimao.com/demo/ chrome default: location 不滚动,直接返回相对整个html的坐标 {'x': 15.0, 'y ...

  6. TypeScript学习笔记 (一)基础特性

    一. 字符串新特性 1. 多行字符串 var str = ``; 2. 字符串模板 var world = "world"; var str = `hello ${world}`; ...

  7. Codeforces 348D Turtles LGV

    Turtles 利用LGV转换成求行列式值. #include<bits/stdc++.h> #define LL long long #define fi first #define s ...

  8. php第二天 开始连接数据库

    php连接数据库有三种方法,分别是mysqli面向对象,mysqli面向过程,pdo. 1.查了资料,最终选择则了mysqli面向过程的方式,运行效率应该要高一些. 代码如下 <?php $se ...

  9. Python交互图表可视化Bokeh:4. 折线图| 面积图

    折线图与面积图 ① 单线图.多线图② 面积图.堆叠面积图 1. 折线图--单线图 import numpy as np import pandas as pd import matplotlib.py ...

  10. liunx命令简介

    图形界面和命令行要达到的目的是一样的,都是让用户控制计算机.然而,真正能够控制计算机硬件(CPU.内存.显示器等)的只有操作系统内核(Kernel),图形界面和命令行只是架设在用户和内核之间的一座桥梁 ...