题目描述 Description
在幻想乡,射命丸文是以偷拍闻名的鸦天狗。当然,文文的照相机可不止能够照相,还能够消除取景框里面所有的弹幕。假设现在文文面前有一块N行M列的弹幕群,每一个单位面积内有分值有num[i][j]的弹幕。相机的取景框可以将一块R行C列的弹幕消除,并且得到这一块区域内所有弹幕的分值(累加)。现在文文想要取得尽可能多的分值,请你计算出她最多能够得到的分值。

输入描述 Input Description
第1行:4个正整数N,M,R,C 第2..N+1行:每行M个正整数,第i+1行第j个数表示num[i][j]

输出描述 Output Description
第1行:1个整数,表示文文能够取得的最大得分

样例输入 Sample Input
3 5 2 3
5 2 7 1 1
5 9 5 1 5
3 5 1 5 3

样例输出 Sample Output
33

数据范围及提示 Data Size & Hint
对于60%的数据:1 <= N,M <= 200
对于100%的数据:1 <= N,M <= 1,000 1 <= R <= N, 1 <= C <= M 1 <= num[i][j] <= 1000
保证结果不超过2,000,000,000

题解:最暴力的做法就是枚举每一个子矩阵求和找最大值,这样显然会超时。我们可以用矩阵前缀和来做这道题。我们读入的时候顺便求一下矩阵前缀和,然后就可以直接用。那么我们怎么通过矩阵前缀和求子矩阵的和呢?其实跟前缀和差不多,详见下图:

矩阵4的和等于最大的矩阵减去((矩阵1+矩阵2)+(矩阵1+矩阵3)- 矩阵1),矩阵前缀和就是这样233,然后我们就可以O(1)询问某个子矩阵的和,是不是很神奇╮(╯▽╰)╭。

代码如下

#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int sum[1010][1010],map[1010][1010];
int main()
{int n,m,r,c,maxx=0;scanf("%d%d%d%d",&n,&m,&r,&c);for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){scanf("%d",&map[i][j]);sum[i][j]=map[i][j]+sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1];//求矩阵前缀和}for(int i=1;i<=n-r+1;i++)for(int j=1;j<=m-c+1;j++)if(sum[i+r-1][j+c-1]-sum[i+r-1][j-1]-sum[i-1][j+c-1]+sum[i-1][j-1]>maxx)//找子矩阵和的最大值 maxx=sum[i+r-1][j+c-1]-sum[i+r-1][j-1]-sum[i-1][j+c-1]+sum[i-1][j-1];printf("%d",maxx);return 0;
}

codevs 1373 射命丸文(矩阵前缀和)相关推荐

  1. codevs 1373 射命丸文

    codevs 1373 射命丸文 题目描述 Description 在幻想乡,射命丸文是以偷拍闻名的鸦天狗.当然,文文的照相机可不止能够照相,还能够消除取景框里面所有的弹幕.假设现在文文面前有一块N行 ...

  2. 蓝桥杯:试题 算法训练 采油区域 矩阵前缀和+动态规划+分治+枚举

    资源限制 时间限制:2.0s 内存限制:512.0MB 采油区域 Siruseri政府决定将石油资源丰富的Navalur省的土地拍卖给私人承包商以建立油井.被拍卖的整块土地为一个矩形区域,被划分为M× ...

  3. [Daimayuan] 巨大的牛棚(C++,矩阵前缀和)

    题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方.我们假定,他的农场划分成 n * n的方格.输入数据中包括有树的方 ...

  4. UVALive - 7139 Rotation 矩阵前缀和(imos和)

    传送门:UVALive 7139 题意:N*M的网格,一辆车沿着网格线按给定路线走,每个网格里有一个人,人的视线始终看着车,问这些人净转圈数的平方和. 思路:因为起点和终点都是左上角,因此我们可以维护 ...

  5. UVALive 7139 Rotation(矩阵前缀和)(2014 Asia Shanghai Regional Contest)

    题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&category=6 ...

  6. 【codevs 1373】射命丸文

    题目描述 在幻想乡,射命丸文是以偷拍闻名的鸦天狗.当然,文文的照相机可不止能够照相,还能够消除取景框里面所有的弹幕.假设现在文文面前有一块N行M列的弹幕群,每一个单位面积内有分值有num[i][j]的 ...

  7. CodeVS1373 射命丸文【矩阵前缀和】

    题目描述 Description 在幻想乡,射命丸文是以偷拍闻名的鸦天狗.当然,文文的照相机可不止能够照相,还能够消除取景框里面所有的弹幕.假设现在文文面前有一块N行M列的弹幕群,每一个单位面积内有分 ...

  8. UVALive 7139 Rotation 二维vector+矩阵前缀和 【模版】

    题目大意:给一个n*m的矩阵,每个方块上有一个人.现在有一辆车在左上角的格点处,矩阵里的人都会一直面向那辆车.现在给出车的移动路线,问每个人总旋转角度的平方和是多少.若一个人顺时针旋转10个圈,逆时针 ...

  9. CodeVS天梯白银

    2016.8.12 [背景]         为了迎接即将到来的NOIP2016,我决定爆刷CodeVS的天梯,今天爆刷了11道白银的水题.其实说是水题,有些还挺有意思的,比如1012.1011. [ ...

最新文章

  1. 工具类:关于如何找到两个List数组中不同的数据的算法!
  2. NB-IOT环境监测项目需求分析
  3. 2、HTML <img>标签(插入图片)
  4. python print 输出到txt_(Python基础教程之七)Python字符串操作
  5. 安装完SqlServer2008,wamp服务器无法启动的问题
  6. 参考 JavaEE注解学习:(二)
  7. linux使用.rpm包安装mysql
  8. 特征工程之自动特征生成(自动特征衍生)工具Featuretools介绍
  9. 阿里巴巴《rocketmq开发指南》_如何看待阿里巴巴孤尽觉得Java是世界上最好的语言?...
  10. YTU 3003: 括号匹配(栈和队列)
  11. stata学习笔记(三):计算五年内的ROA标准差所用到的一些知识
  12. java web代码混淆_JAVA WEB 项目的代码混淆
  13. 使用3CDaemon 进行ftp 传输文件 (linux-开发板) 的方法
  14. for循环遍历Set集合时如何判断是否有下一个元素
  15. matlab怎么表示对角阵,matlab – 如何基于每一行将矩阵转换为一堆对角矩阵?
  16. 用Netlogo实现病毒传播对经济的影响分析
  17. android位置服务与GPS实时定位工具类
  18. 使用python爬虫爬取最好大学网大学排名实例
  19. Andorid屏幕唤醒异常,Power按键无法点亮屏幕的分析
  20. itunes cannot read the contents of the iphone

热门文章

  1. 端粒效应《The Telemere Effect》程序员的养生指南(一)压力、端粒与衰老
  2. Mysql 建立外键出错1822 可能原因之一分析 - Failed to add the foreign key constraint. Missing index for constraint
  3. 如何在资源社区上传图标素材
  4. 使用 iview 实现PC端生成推广海报与二维码并下载的功能,基于iview Modal 对话框 与 Carousel 走马灯组件实现
  5. 【游戏算法】2D游戏中聚光灯效果
  6. mask-image实现聚光灯效果
  7. PHP入门-配置虚拟主机
  8. linux 判断u盘 硬盘坏道,u盘怎么检测硬盘坏道
  9. Window10蓝牙无法连接的解决方案(已成功)
  10. 有效的沟通,如忍者的最后一击!