51nod 1051
* 最大子矩阵
* sum[i][j] 表示第 i 行前 j 列的和,即每一行的前缀
* i,j 指针枚举列,k指针枚举行
* Now 记录当前枚举的子矩阵的价值
* 由于记录了前缀信息,一旦 Now < 0, Now = 0
* Max 变量在过程中取最大
#include <bits/stdc++.h> const int N = ; int sum[N][N];
int n, m; #define gc getchar() inline int read() {
int x = , f = ; char c = gc;
while(c < '' || c > '') {if(c == '-') f = -; c = gc;}
while(c >= '' && c <= '') x = x * + c - '', c = gc;
return x * f;
} int main() {
m = read(), n = read();
for(int i = ; i <= n; i ++) {
for(int j = ; j <= m; j ++) {
int x = read();
sum[i][j] = sum[i][j - ] + x;
}
}
int Ans();
for(int i = ; i <= m; i ++) {
for(int j = i; j <= m; j ++) {
int Now(), Max();
for(int k = ; k <= n; k ++) {
Now += sum[k][j] - sum[k][i - ];
if(Now < ) Now = ;
Max = std:: max(Max, Now);
}
Ans = std:: max(Ans, Max);
}
}
printf("%d", Ans); return ;
}
51nod 1051的更多相关文章
- 51nod 1051 最大子矩阵和(dp)
题目链接:51nod 1051 最大子矩阵和 实质是把最大子段和扩展到二维.读题注意m,n... #include<cstdio> #include<cstring> #inc ...
- 51nod 1051 求最大子矩阵和
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1051 1051 最大子矩阵和 基准时间限制:2 秒 空间限制: ...
- 51nod 1051 最大子矩阵和
没想到居然可以O(n3)暴力过 就是大概之前的 最大连续子序列和 加成2维度了 枚举起始列 和 终止列 然后计算从1到n行最大的子矩阵的和 注意n 和 m 的输入顺序!! #include< ...
- 51nod 1051 最大子矩阵和 【最大子段和DP变形/降维】
[题目]: 一个M*N的矩阵,找到此矩阵的一个子矩阵,并且这个子矩阵的元素的和是最大的,输出这个最大的值. 例如:*3的矩阵: - - - - 和最大的子矩阵是: - - Input 第1行:M和N, ...
- 51nod 1051【基础】
思路: 找题4级做做...然后找了题最水的.. = =感动...居然是一下子[记]得了做法... dp一下,枚举列的起点和终点,然后求和这一段,然后对这一大列就是求个最大字段和: #include & ...
- 51nod 1051 最大子矩阵和(DP)
题意 略 分析 一道经典的DP题,但是我弱到差点做不出来,真的垃圾 设置\(sum(i,j)代表1-i行第j列的前缀和\),然后枚举行i和行j,再枚举列k,做一遍类似一维的最大子段和即可 #inclu ...
- 【模板】51nod 1051 最大子矩阵和
[题解] 二重循环枚举起始列和终止列,竖着往下加,转化为一个最大子段和问题,逐行累加即可. #include<cstdio> #include<cstring> #includ ...
- 最大子矩阵和 51Nod 1051 模板题
一个M*N的矩阵,找到此矩阵的一个子矩阵,并且这个子矩阵的元素的和是最大的,输出这个最大的值. 例如:3*3的矩阵: -1 3 -1 2 -1 3 -3 1 2 和最大的子矩阵是: 3 - ...
- 基础dp 记录
51nod 1134 最长递增子序列 #include<iostream> #include<cstdio> #include<cstring> #include& ...
随机推荐
- react以组件为中心的代码分割和懒加载
背景 随着项目越来越复杂,功能够越来越多,JS单个文件就会比较臃肿,js代码拆分显得必不可少. Js文件拆分主要分为按照路由进行js拆分.按照组件进行js拆分. 按照路由拆分:因为本项目请求路径得原因 ...
- java注解日志记录到数据库
1. pom添加依赖包 <!--添加aop依赖--><dependency> <groupId>org.springframework.boot</group ...
- vue之生命周期与导航守卫
组件钩子函数: beforeCreate.created.beforeMount.mounted.beforeUpdate.updated.beforeDestroy.destoryed 还有两个特殊 ...
- 一分钟了解Linux文件系统
Linux文件系统原理在所有的操作系统中文件都有文件名与数据,在Linux系统上文件系统分成两个部分:用户数据 (user data) 与元数据 (metadata).用户数据,即文件数据块 (dat ...
- 1.Storm概述简介
主要目标: 1. 离线计算是什么? 2. 流式计算是什么? 3. 流式计算与离线计算的区别? 4. Storm是什么? 5. Storm与Hadoop的区别? 6. Storm的应用场景及行业案例 7 ...
- Thinkphp 两级联动
<!-- 前端代码部分--><div class="pop-movegroup" id="salesmanBox"> <dl> ...
- python中常用的九种预处理方法
本文总结的是我们大家在python中常见的数据预处理方法,以下通过sklearn的preprocessing模块来介绍; 1. 标准化(Standardization or Mean Removal ...
- ggplot2入门与进阶(下)
出处:http://www.cellyse.com/how_to_use_gggplot2_part2/ 更多实战 例一 Michaelis-Menten动力学方程 这个例子中采用出自文献中的一组有关 ...
- 堆排序Heap_Sort
堆排序就是借助二叉堆进行排序,不了解二叉堆的可以先看这里.本文以升序排序为例,首先将待排序数组放置在最小堆中,此时堆顶一定是数组中最小的元素,然后删除堆顶元素,此时调整后的最小堆顶会是第二小的元素,从 ...
- Charles----伪造手机端的request和reponse参数
使用场景: 在测试中通过伪造reponse数据来模拟某些测试场景,如下截图.要求:通过修改reponse中的值,再次请求修改7为100,只是会显示为99+ 实现方式: 1.通过breakpoints来 ...