P1719 最大加权矩形(二维前缀和Java)
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)相关推荐
- P1719 最大加权矩形(二维dp)
P1719 最大加权矩形(二维dp) 原题戳这里 题目描述 为了更好的备战NOIP2013,电脑组的几个女孩子LYQ,ZSC,ZHQ认为,我们不光需要机房,我们还需要运动,于是就决定找校长申请一块电脑 ...
- 洛谷[P1719 最大加权矩形] {前缀和与差分} 奋斗的珂珂~
洛谷[P1719 最大加权矩形] {前缀和与差分} 题目描述 为了更好的备战NOIP2013,电脑组的几个女孩子LYQ,ZSC,ZHQ认为,我们不光需要机房,我们还需要运动,于是就决定找校长申请一块电 ...
- 二维前缀和(矩形割补法)——杨子曰算法
二维前缀和(矩形割补法)--杨子曰算法 今天曰一个很实用的技巧,二维前缀和 来,先问一个问题,如果我给出一个矩阵,让你求出任意一个子矩阵的和,你会怎么搞? 哦,简单简单,O(n^2)咔咔地暴力一下,欧 ...
- 一维前缀和与二维前缀和
前缀和 #一维前缀和: 1) 其实就是数列的前n项和,直接放代码:` sum[1]=a[1];for(int i=2;i<=n;i++)sum[i]=sum[i-1]+a[i];/*其实也可以不 ...
- 《算法竞赛进阶指南》打卡-基本算法-AcWing 99. 激光炸弹:二维前缀和
文章目录 题目解答 题目来源 题目解答 来源:acwing 分析: 前缀和习惯从下标1开始. 注意:本题是不包含边界的.什么意思? 以样例为例,这里有两个点,分别在(0,0) 和(1,1),且攻击的矩 ...
- 海啸(二维前缀和/二维树状数组)
链接:https://ac.nowcoder.com/acm/problem/21862 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...
- leetcode 304. Range Sum Query 2D - Immutable |304. 二维区域和检索 - 矩阵不可变(二维前缀和问题)
题目 https://leetcode.com/problems/range-sum-query-2d-immutable/ 题解 本题是 medium 难度,二维前缀和问题.相似题目有: Easy: ...
- 【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 ...
- Gym 102091L Largest Allowed Area 【二分+二维前缀和】
<题目链接> 题目大意: 给你一个由01组成的矩形,现在问你,该矩形中,最多只含一个1的正方形的边长最长是多少. 解题分析: 用二维前缀和维护一下矩形的01值,便于后面直接$O(1)$查询 ...
最新文章
- java生成tif图片的缩略图,将多页tif文件转换为图像文件,并生成缩略图
- 和我一起学Windows Workflow Foundation(1)-----创建和调试一个WF实例(转)
- .Net Core分布式部署中的DataProtection密钥安全性
- Django框架——类视图
- wifi p2p连接 linux,Wi-Fi p2p ap 共存
- 我离baidu.com有几跳
- 第4章 旋转的圆弧(《Python趣味创意编程》教学视频)
- matlab用mex编译.c文件报错---“重定义;不同的基类型”、“宏重定义”等
- WCF客户端动态设置WCF服务器主机的地址的方法参考,可以连接多个相同WCF主机的方法...
- 90后黄金程序员,你不是码农,请自信
- 【Opengl】Glut下载与环境配置
- 拼多多和酷家乐面试经历总结(已拿offer)
- mysql的常用英语_学习Mysql常用的英文单词
- 什么样的耳机戴着舒服些、最好用的的几款骨传导蓝牙耳机推荐
- 计算机的录像功能在哪里找,电脑录像功能在哪
- val和var的区别
- 使用模板消息及利用模板消息群发的说明
- 关于两个模块同时使用Arduino Mega硬串口问题
- 机器人简化图画手绘图_机器人简笔画画法图片欣赏
- 复杂背景下卷积神经网络在森林火灾识别中的研究与应用-代码实现