bzoj1177 [Apio2009]Oil 二维前缀最大值,和
[Apio2009]Oil
Time Limit: 15 Sec Memory Limit: 162 MB
Submit: 2300 Solved: 932
[Submit][Status][Discuss]
Description
采油区域 Siruseri政府决定将石油资源丰富的Navalur省的土地拍卖给私人承包商以建立油井。被拍卖的整块土地为一个矩形区域,被划分为M×N个小块。 Siruseri地质调查局有关于Navalur土地石油储量的估测数据。这些数据表示为M×N个非负整数,即对每一小块土地石油储量的估计值。 为了避免出现垄断,政府规定每一个承包商只能承包一个由K×K块相连的土地构成的正方形区域。 AoE石油联合公司由三个承包商组成,他们想选择三块互不相交的K×K的区域使得总的收益最大。 例如,假设石油储量的估计值如下: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 8 8 8 8 1 1 1 1 8 8 8 8 8 1 1 1 1 8 8 8 8 8 1 1 1 1 1 1 1 8 8 8 1 1 1 1 1 1 1 1 8 8 8 1 1 1 1 1 1 9 9 9 1 1 1 1 1 1 9 9 9 如果K = 2, AoE公司可以承包的区域的石油储量总和为100, 如果K = 3, AoE公司可以承包的区域的石油储量总和为208。 AoE公司雇佣你来写一个程序,帮助计算出他们可以承包的区域的石油储量之和的最大值。
Input
输入第一行包含三个整数M, N, K,其中M和N是矩形区域的行数和列数,K是每一个承包商承包的正方形的大小(边长的块数)。接下来M行,每行有N个非负整数表示这一行每一小块土地的石油储量的估计值
Output
输出只包含一个整数,表示AoE公司可以承包的区域的石油储量之和的最大值。
Sample Input
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1
1 8 8 8 8 8 1 1 1
1 8 8 8 8 8 1 1 1
1 8 8 8 8 8 1 1 1
1 1 1 1 8 8 8 1 1
1 1 1 1 1 1 8 8 8
1 1 1 1 1 1 9 9 9
1 1 1 1 1 1 9 9 9
Sample Output
HINT
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define inf 100000000000000LL
#define pa pair<int,int>
#define ll long long
#define N 2505
#define fp(a,b,c) for(int a=b;a<=c;a++)
#define fd(a,b,c) for(int a=c;a>=b;a--)
using namespace std;
int n,m,K,ans;
int a[N][N],b[N][N],c[N][N],d[N][N],s[N][N];
int main()
{
scanf("%d%d%d",&n,&m,&K);
fp(i,,n)fp(j,,m)
{
int x;scanf("%d",&x);
s[i][j]=s[i-][j]+s[i][j-]-s[i-][j-]+x;
}
fd(i,K,n)fd(j,K,m)s[i][j]-=s[i-K][j]+s[i][j-K]-s[i-K][j-K];//s[i][j]表示以i,j为右下角的的k*k的正方形的价值 fp(i,K,n)fp(j,K,m)a[i][j]=max(s[i][j],max(a[i-][j],a[i][j-]));//a[i][j]表示以i,j为右下角的最大值
fp(i,K,n)fd(j,K,m)b[i][j]=max(s[i][j],max(b[i-][j],b[i][j+]));//b[i][j]表示以i,j为左下角的最大值
fd(i,K,n)fp(j,K,m)c[i][j]=max(s[i][j],max(c[i+][j],c[i][j-]));//c[i][j]表示以i,j为右上角的最大值
fd(i,K,n)fd(j,K,m)d[i][j]=max(s[i][j],max(d[i+][j],d[i][j+]));//d[i][j]表示以i,j为左上角的最大值 fp(i,K,n-K)fp(j,K,m-K)ans=max(ans,a[i][j]+b[i][j+K]+c[i+K][m]);
fp(i,K,n-K)fp(j,K+K,m)ans=max(ans,b[i][j]+d[i+K][j]+a[n][j-K]);
fp(i,K+K,n)fp(j,K,m-K)ans=max(ans,c[i][j]+d[i][j+K]+a[i-K][m]);
fp(i,K,n-K)fp(j,K,m-K)ans=max(ans,a[i][j]+c[i+K][j]+b[n][j+K]); fp(i,K,n)fp(j,K+K,m-K)ans=max(ans,s[i][j]+a[n][j-K]+b[n][j+K]);
fp(i,K+K,n-K)fp(j,K,m)ans=max(ans,s[i][j]+a[i-K][m]+c[i+K][m]); printf("%d\n",ans);
}
bzoj1177 [Apio2009]Oil 二维前缀最大值,和的更多相关文章
- BZOJ1177 [Apio2009]Oil 二维前缀和 二维前缀最值
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1177 题意概括 在一个n*m的矩阵中,每一个位置一个数字. 现在让你选出3个k*k的矩阵,它们互不 ...
- openjudge1768 最大子矩阵[二维前缀和or递推|DP]
总时间限制: 1000ms 内存限制: 65536kB 描述 已知矩阵的大小定义为矩阵中所有元素的和.给定一个矩阵,你的任务是找到最大的非空(大小至少是1 * 1)子矩阵. 比如,如下4 * 4的 ...
- [BZOJ1177][Apio2009]Oil
[BZOJ1177][Apio2009]Oil 试题描述 采油区域 Siruseri政府决定将石油资源丰富的Navalur省的土地拍卖给私人承包商以建立油井.被拍卖的整块土地为一个矩形区域,被划分为M ...
- Codeforces 1262E Arson In Berland Forest(二维前缀和+二维差分+二分)
题意是需要求最大的扩散时间,最后输出的是一开始的火源点,那么我们比较容易想到的是二分找最大值,但是我们在这满足这样的点的时候可以发现,在当前扩散时间k下,以这个点为中心的(2k+1)2的正方形块内必 ...
- 【AcWing 99】激光炸弹——二维前缀和
(题面来自AcWing) 一种新型的激光炸弹,可以摧毁一个边长为 R 的正方形内的所有的目标. 现在地图上有 N 个目标,用整数Xi,Yi表示目标在地图上的位置,每个目标都有一个价值Wi. 激光炸弹的 ...
- [日常摸鱼]bzoj1218[HNOI2003]激光炸弹-二维前缀
题意:二维网格一些格子有权值,求用边长为$r$的正方形能覆盖到格子权值和的最大值,格子大小$ \leq 5000$ 非常裸的二维前缀,然而 题目下标从0开始! QAQ 要是比赛就要爆零啦- #incl ...
- COGS1752 [BOI2007]摩基亚Mokia(CDQ分治 + 二维前缀和 + 线段树)
题目这么说的: 摩尔瓦多的移动电话公司摩基亚(Mokia)设计出了一种新的用户定位系统.和其他的定位系统一样,它能够迅速回答任何形如“用户C的位置在哪?”的问题,精确到毫米.但其真正高科技之处在于,它 ...
- poj-3739. Special Squares(二维前缀和)
题目链接: I. Special Squares There are some points and lines parellel to x-axis or y-axis on the plane. ...
- Good Bye 2015 C. New Year and Domino 二维前缀
C. New Year and Domino They say "years are like dominoes, tumbling one after the other". ...
随机推荐
- SVG Sprite 使用Symbol元素制作ICON
介绍 SVG是一种全新的使用方式,应该说这才是未来的主流,也是平台目前推荐的用法.之前写过两篇关于CSS icon在页面显示的博客,后来了解到现在大多数前端团队和项目都在使用SVG Sprite这种方 ...
- Solium代码测试框架
Solium, 在solid中,Linter用于标识和修复样式&安全问题 //调用测试 solium -d contracts --fix 源代码名称:Solium 源代码网址:http:// ...
- 4.安装hive
下载安装包并解压安装元数据库配置hive添加hvie环境变量修改hive-env.sh修改hive配置文件初始化metastore使用hive cli配置hivemestore配置hiveserv ...
- [C++] in-class initializer
C++11 introduced serveral contructor-related enhancements including: Class member initializers Deleg ...
- 基于angular+bower+glup的webapp
一:bower介绍 1:全局安装安装bower cnpm i -g bower bower常用指令: bower init //初始化文件 bower install bower uninstall ...
- Thunder团队Beta周贡献分规则
小组名称:Thunder 项目名称:i阅app 组长:王航 成员:李传康.翟宇豪.邹双黛.苗威.宋雨.胡佑蓉.杨梓瑞 分配规则 规则1:基础分,拿出总分的20%(8分)进行均分,剩下的80%(32分) ...
- android平台蓝牙编程(转)
http://blog.csdn.net/pwei007/article/details/6015907 Android平台支持蓝牙网络协议栈,实现蓝牙设备之间数据的无线传输. 本文档描述了怎样利用a ...
- error : Web 项目“RealEstate.Web”的 URL“http://localhost:20000”已配置为将 IIS 用作 Web 服务器,但是当前在 IIS Express W
error : Web 项目"RealEstate.Web"的 URL"http://localhost:20000"已配置为将 IIS 用作 Web 服务器 ...
- 使用cookies模拟登陆
http://blog.csdn.net/a1099439833/article/details/51918955 使用cookies会话跟踪,保持cookies访问,对于cookies会失效的问题可 ...
- 如何高效的使用Google
文章再转自知乎:http://www.zhihu.com/question/20161362