codevs 1373 射命丸文(矩阵前缀和)
题目描述 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 射命丸文(矩阵前缀和)相关推荐
- codevs 1373 射命丸文
codevs 1373 射命丸文 题目描述 Description 在幻想乡,射命丸文是以偷拍闻名的鸦天狗.当然,文文的照相机可不止能够照相,还能够消除取景框里面所有的弹幕.假设现在文文面前有一块N行 ...
- 蓝桥杯:试题 算法训练 采油区域 矩阵前缀和+动态规划+分治+枚举
资源限制 时间限制:2.0s 内存限制:512.0MB 采油区域 Siruseri政府决定将石油资源丰富的Navalur省的土地拍卖给私人承包商以建立油井.被拍卖的整块土地为一个矩形区域,被划分为M× ...
- [Daimayuan] 巨大的牛棚(C++,矩阵前缀和)
题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方.我们假定,他的农场划分成 n * n的方格.输入数据中包括有树的方 ...
- UVALive - 7139 Rotation 矩阵前缀和(imos和)
传送门:UVALive 7139 题意:N*M的网格,一辆车沿着网格线按给定路线走,每个网格里有一个人,人的视线始终看着车,问这些人净转圈数的平方和. 思路:因为起点和终点都是左上角,因此我们可以维护 ...
- UVALive 7139 Rotation(矩阵前缀和)(2014 Asia Shanghai Regional Contest)
题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&category=6 ...
- 【codevs 1373】射命丸文
题目描述 在幻想乡,射命丸文是以偷拍闻名的鸦天狗.当然,文文的照相机可不止能够照相,还能够消除取景框里面所有的弹幕.假设现在文文面前有一块N行M列的弹幕群,每一个单位面积内有分值有num[i][j]的 ...
- CodeVS1373 射命丸文【矩阵前缀和】
题目描述 Description 在幻想乡,射命丸文是以偷拍闻名的鸦天狗.当然,文文的照相机可不止能够照相,还能够消除取景框里面所有的弹幕.假设现在文文面前有一块N行M列的弹幕群,每一个单位面积内有分 ...
- UVALive 7139 Rotation 二维vector+矩阵前缀和 【模版】
题目大意:给一个n*m的矩阵,每个方块上有一个人.现在有一辆车在左上角的格点处,矩阵里的人都会一直面向那辆车.现在给出车的移动路线,问每个人总旋转角度的平方和是多少.若一个人顺时针旋转10个圈,逆时针 ...
- CodeVS天梯白银
2016.8.12 [背景] 为了迎接即将到来的NOIP2016,我决定爆刷CodeVS的天梯,今天爆刷了11道白银的水题.其实说是水题,有些还挺有意思的,比如1012.1011. [ ...
最新文章
- 工具类:关于如何找到两个List数组中不同的数据的算法!
- NB-IOT环境监测项目需求分析
- 2、HTML <img>标签(插入图片)
- python print 输出到txt_(Python基础教程之七)Python字符串操作
- 安装完SqlServer2008,wamp服务器无法启动的问题
- 参考 JavaEE注解学习:(二)
- linux使用.rpm包安装mysql
- 特征工程之自动特征生成(自动特征衍生)工具Featuretools介绍
- 阿里巴巴《rocketmq开发指南》_如何看待阿里巴巴孤尽觉得Java是世界上最好的语言?...
- YTU 3003: 括号匹配(栈和队列)
- stata学习笔记(三):计算五年内的ROA标准差所用到的一些知识
- java web代码混淆_JAVA WEB 项目的代码混淆
- 使用3CDaemon 进行ftp 传输文件 (linux-开发板) 的方法
- for循环遍历Set集合时如何判断是否有下一个元素
- matlab怎么表示对角阵,matlab – 如何基于每一行将矩阵转换为一堆对角矩阵?
- 用Netlogo实现病毒传播对经济的影响分析
- android位置服务与GPS实时定位工具类
- 使用python爬虫爬取最好大学网大学排名实例
- Andorid屏幕唤醒异常,Power按键无法点亮屏幕的分析
- itunes cannot read the contents of the iphone
热门文章
- 端粒效应《The Telemere Effect》程序员的养生指南(一)压力、端粒与衰老
- Mysql 建立外键出错1822 可能原因之一分析 - Failed to add the foreign key constraint. Missing index for constraint
- 如何在资源社区上传图标素材
- 使用 iview 实现PC端生成推广海报与二维码并下载的功能,基于iview Modal 对话框 与 Carousel 走马灯组件实现
- 【游戏算法】2D游戏中聚光灯效果
- mask-image实现聚光灯效果
- PHP入门-配置虚拟主机
- linux 判断u盘 硬盘坏道,u盘怎么检测硬盘坏道
- Window10蓝牙无法连接的解决方案(已成功)
- 有效的沟通,如忍者的最后一击!