题干:

给你一个m×n的整数矩阵,在上面找一个x×y的子矩阵,使子矩阵中所有元素的和最大。

Input

输入数据的第一行为一个正整数T,表示有T组测试数据。每一组测试数据的第一行为四个正整数m,n,x,y(0<m,n<1000 AND 0<x<=m AND 0<y<=n),表示给定的矩形有m行n列。接下来这个矩阵,有m行,每行有n个不大于1000的正整数。

Output

对于每组数据,输出一个整数,表示子矩阵的最大和。

Sample Input

1
4 5 2 2
3 361 649 676 588
992 762 156 993 169
662 34 638 89 543
525 165 254 809 280

Sample Output

2474

解题报告:

预处理一个前缀和然后O1查询就行了。(四个月前写的题今天在学最小环问题的时候忽然发现了,emmm拿出来写一个博客吧)

AC代码:

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int MAX = 1e3 + 5;
const int INF = 0x3f3f3f3f;
ll a[MAX][MAX];int main()
{int t;int m,n,x,y;ll maxx;cin>>t;while(t--) {maxx = -INF;scanf("%d%d%d%d",&m,&n,&x,&y);for(int i = 1; i<=m; i++) {for(int j = 1; j<=n; j++) {scanf("%lld",&a[i][j]);}}for(int i = 1; i<=m; i++) {for(int j = 1; j<=n; j++) {a[i][j] = a[i][j] + a[i-1][j] + a[i][j-1] - a[i-1][j-1];}}//从i,j开始 到 i+x-1,j+y-1 for(int i = 1; i<=m-x+1; i++) {for(int j = 1; j<=n-y+1; j++) {maxx = max(maxx,a[i+x-1][j+y-1]-a[i+x-1][j-1]-a[i-1][j+y-1]+a[i-1][j-1]);}}printf("%lld\n",maxx);}return 0 ;
}

【HDU - 1559】最大子矩阵 (二维前缀和裸题)相关推荐

  1. 【HDU - 1937 】Finding Seats(二维前缀和+尺取法)

    题干: A group of K friends is going to see a movie. However, they are too late to get good tickets, so ...

  2. 2018 Multi-University Training Contest 4 Problem E. Matrix from Arrays 【打表+二维前缀和】

    任意门:http://acm.hdu.edu.cn/showproblem.php?pid=6336 Problem E. Matrix from Arrays Time Limit: 4000/20 ...

  3. 二维前缀和+差分 HDU6514 Monitor

    Monitor [ HDU - 6514 ] 题目大意:给你个n×m的区域,每个区域被选中标记为1,没被选中标记为0,然后给一些标记的区域,查询若干个区域问是否有0的 一道二维前缀和的题目,想通没什么 ...

  4. 海啸(二维前缀和/二维树状数组)

    链接:https://ac.nowcoder.com/acm/problem/21862 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...

  5. Gym 102091L Largest Allowed Area 【二分+二维前缀和】

    <题目链接> 题目大意: 给你一个由01组成的矩形,现在问你,该矩形中,最多只含一个1的正方形的边长最长是多少. 解题分析: 用二维前缀和维护一下矩形的01值,便于后面直接$O(1)$查询 ...

  6. AcWing 99. 激光炸弹 (二维前缀和)

    99. 激光炸弹 题意 给定一个5000x5000的地图 随机在该地图上放置物品,物品具有价值,且不同物品可以放置在同一位置 有一个炸弹的爆炸范围为RxR的正方形 问该炸弹在地图上爆炸一次,最多能摧毁 ...

  7. 模版 ----- 一维前缀和与二维前缀和

    一维前缀和 795. 前缀和 a[i] 的前 i 项和 s[i] 的递推公式:s[i]=s[i−1]+a[i]s[i] = s[i - 1] + a[i]s[i]=s[i−1]+a[i] 求出在 [l ...

  8. 一维前缀和,二维前缀和,一维差分,二维差分(翻译)

    练习一道题目 输入一个长度为n的整数序列. 接下来再输入m个询问,每个询问输入一对l, r. 对于每个询问,输出原序列中从第l个数到第r个数的和. 输入格式 第一行包含两个整数n和m. 第二行包含n个 ...

  9. 激光导弹Gundam Unicorn(二维前缀和and二维差分)

    激光炸弹和Gundam Unicorn是二维前缀和和二位差分的综合应用. 首先是一二维差分,前缀和的模板前缀和与差分 图文并茂 超级详细整理(全网最通俗易懂)_林深不见鹿 的博客-CSDN博客_前缀和 ...

最新文章

  1. 【Dlib】使用dlib_face_recognition_resnet_model_v1.dat无法实现微调fune-tuning
  2. ISME:多组学揭示低氧环境下的汞甲基化细菌
  3. c/c++ c++ file c++/stl/boost 判断文件目录是否存在
  4. matplotlib 模块 画图 例2
  5. 第001期:数据中心知识问答
  6. 如何获取某个标签下所有的元素id_D3库实践笔记之元素定位与数据绑定 |可视化系列33...
  7. gazebo入门_Gazebo仿真控制中,有哪些你不知道的秘密?
  8. 让步的人,最值得深交
  9. Jmeter接口测试使用beanshell断言json返回
  10. 【英语学习】【Level 07】U01 Making friends L3 Do you eat here a lot?
  11. 【Flink】Flink 1.12.2 TaskSlotTable
  12. pandas 如何删掉第一行_Pandas-数据筛选
  13. 微信也QQ服务器,妄想山海QQ区还是微信区好 平民服务器选择推荐
  14. 【Linux学习笔记】9. Linux打包压缩解压缩命令tar
  15. oeasy教您玩转vim - 52 - # 正则查找
  16. C++中mian中的参数
  17. [036] 微信公众帐号开发教程第12篇-符号表情的发送(下)
  18. 如何克服自己懒惰的坏习惯?
  19. 信息安全立法现状与形式责任
  20. <httpasyncclient>高并发场景报错分析与解决

热门文章

  1. 85. Maximal Rectangle
  2. 动态规划6个题目总结比较
  3. [Leetcode][第785题][JAVA][判断二分图][BFS][DFS]
  4. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第4篇] P类复杂问题
  5. mysql 8.0.12解压版安装教程_mysql 8.0.12 解压版安装教程
  6. mysql tungsten_使用tungsten将mysql的数据同步到hadoop
  7. android实现3种定位的切换,Android 滑动定位+吸附悬停效果实现
  8. 1388C. Uncle Bogdan and Country Happiness
  9. python vtk_VTK在python环境下的安装和调用
  10. 关闭SQLite3中的journal暂存档