P1719 最大加权矩形

题目链接:https://www.luogu.com.cn/problem/P1719

题目描述

为了更好的备战NOIP2013,电脑组的几个女孩子LYQ,ZSC,ZHQ认为,我们不光需要机房,我们还需要运动,于是就决定找校长申请一块电脑组的课余运动场地,听说她们都是电脑组的高手,校长没有马上答应他们,而是先给她们出了一道数学题,并且告诉她们:你们能获得的运动场地的面积就是你们能找到的这个最大的数字。

校长先给他们一个N*N矩阵。要求矩阵中最大加权矩形,即矩阵的每一个元素都有一权值,权值定义在整数集上。从中找一矩形,矩形大小无限制,是其中包含的所有元素的和最大 。矩阵的每个元素属于[-127,127],例如

0 –2 –7 0
9 2 –6 2
-4 1 –4 1
-1 8 0 –2
在左下角:

9 2
-4 1
-1 8
和为15。

几个女孩子有点犯难了,于是就找到了电脑组精打细算的HZH,TZY小朋友帮忙计算,但是遗憾的是他们的答案都不一样,涉及土地的事情我们可不能含糊,你能帮忙计算出校长所给的矩形中加权和最大的矩形吗?

输入格式

第一行:n,接下来是n行n列的矩阵。

输出格式

最大矩形(子矩阵)的和。

输入输出样例

输入 #1
4
0 -2 -7 0
9 2 -6 2
-4 1 -4 1
-1 8 0 -2
输出 #1
15
说明/提示
n<=120

解题思路:

二位前缀和模板题
dp[i][j]为i×j矩阵的元素和,即dp[i][j]+=dp[i-1][j]+dp[i][j-1]-dp[i-1][j-1]。

找最大子矩阵,则dp[i][j]-dp[i][j-y]-dp[i-x][j]+dp[i-x][j-y]即为dp[i][j]中x×y的子矩阵的元素和。

代码如下:

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int maxn = 0;int[][] dp = new int[n + 1][n + 1];for (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++) {dp[i][j] = sc.nextInt();dp[i][j] += dp[i - 1][j] + dp[i][j - 1] - dp[i - 1][j - 1];}for (int i = 1; i <= n; i++) {for (int j = 1; j <= n; j++) {for (int x = 1; x <= i; x++) {for (int y = 1; y <= j; y++) {maxn = Math.max(maxn, dp[i][j] - dp[i - x][j] - dp[i][j - y] + dp[i - x][j - y]);}}}}System.out.println(maxn);}
}

P1719 最大加权矩形(二维前缀和Java)相关推荐

  1. P1719 最大加权矩形(二维dp)

    P1719 最大加权矩形(二维dp) 原题戳这里 题目描述 为了更好的备战NOIP2013,电脑组的几个女孩子LYQ,ZSC,ZHQ认为,我们不光需要机房,我们还需要运动,于是就决定找校长申请一块电脑 ...

  2. 洛谷[P1719 最大加权矩形] {前缀和与差分} 奋斗的珂珂~

    洛谷[P1719 最大加权矩形] {前缀和与差分} 题目描述 为了更好的备战NOIP2013,电脑组的几个女孩子LYQ,ZSC,ZHQ认为,我们不光需要机房,我们还需要运动,于是就决定找校长申请一块电 ...

  3. 二维前缀和(矩形割补法)——杨子曰算法

    二维前缀和(矩形割补法)--杨子曰算法 今天曰一个很实用的技巧,二维前缀和 来,先问一个问题,如果我给出一个矩阵,让你求出任意一个子矩阵的和,你会怎么搞? 哦,简单简单,O(n^2)咔咔地暴力一下,欧 ...

  4. 一维前缀和与二维前缀和

    前缀和 #一维前缀和: 1) 其实就是数列的前n项和,直接放代码:` sum[1]=a[1];for(int i=2;i<=n;i++)sum[i]=sum[i-1]+a[i];/*其实也可以不 ...

  5. 《算法竞赛进阶指南》打卡-基本算法-AcWing 99. 激光炸弹:二维前缀和

    文章目录 题目解答 题目来源 题目解答 来源:acwing 分析: 前缀和习惯从下标1开始. 注意:本题是不包含边界的.什么意思? 以样例为例,这里有两个点,分别在(0,0) 和(1,1),且攻击的矩 ...

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

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

  7. leetcode 304. Range Sum Query 2D - Immutable |304. 二维区域和检索 - 矩阵不可变(二维前缀和问题)

    题目 https://leetcode.com/problems/range-sum-query-2d-immutable/ 题解 本题是 medium 难度,二维前缀和问题.相似题目有: Easy: ...

  8. 【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 ...

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

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

最新文章

  1. java生成tif图片的缩略图,将多页tif文件转换为图像文件,并生成缩略图
  2. 和我一起学Windows Workflow Foundation(1)-----创建和调试一个WF实例(转)
  3. .Net Core分布式部署中的DataProtection密钥安全性
  4. Django框架——类视图
  5. wifi p2p连接 linux,Wi-Fi p2p ap 共存
  6. 我离baidu.com有几跳
  7. 第4章 旋转的圆弧(《Python趣味创意编程》教学视频)
  8. matlab用mex编译.c文件报错---“重定义;不同的基类型”、“宏重定义”等
  9. WCF客户端动态设置WCF服务器主机的地址的方法参考,可以连接多个相同WCF主机的方法...
  10. 90后黄金程序员,你不是码农,请自信
  11. 【Opengl】Glut下载与环境配置
  12. 拼多多和酷家乐面试经历总结(已拿offer)
  13. mysql的常用英语_学习Mysql常用的英文单词
  14. 什么样的耳机戴着舒服些、最好用的的几款骨传导蓝牙耳机推荐
  15. 计算机的录像功能在哪里找,电脑录像功能在哪
  16. val和var的区别
  17. 使用模板消息及利用模板消息群发的说明
  18. 关于两个模块同时使用Arduino Mega硬串口问题
  19. 机器人简化图画手绘图_机器人简笔画画法图片欣赏
  20. 复杂背景下卷积神经网络在森林火灾识别中的研究与应用-代码实现

热门文章

  1. squid 简介与安装配置
  2. APP混合应用之web页面处理
  3. (41.1)【JWT-KID漏洞】KID之目录遍历、命令注入、SQL注入
  4. vulnhub之Hacker_Kid-v1.0.1
  5. 乐聊----java界面聊天室
  6. 新栏目上线|我是戴小乐-集美貌与才华于一身~
  7. 忘记数据库密码怎么办
  8. 服务器响应程序,封装高可复用的服务端响应SSC程序修复对象 --ServerResponse
  9. 李国庆是如何被“踢出”当当的?
  10. python爬虫实现爬取网页主页信息(html代码)