问题描述:给定一个 n*n 的矩阵,求最大子矩阵。
引发一个专题:
求最大子矩阵的方法。
方法一:最朴素的算法可以是枚举两个端点,在对其求和。复杂度O(n^6) hloj 1935护林员盖房子
方法二:预处理出前缀和 sum[i][j]表示由(1,1) 到 (i,j) 的和。
所以由 (x1,y1) 到(x2,y2) 可以O(1) 求。 即为 sum[x2][y2]-sum[x1-1][y2]-sum[x2][y1-1]+sum[x1-1][y1-1] 。可以画图理解。 复杂度 O(n^4)
代码:

#include<bits/stdc++.h>using namespace std;
int n;
int a[500][500],sum[500][500],temp[500];
int ans=-1;
// x1 y1--->x2 y2   sum[x2][y2]-sum[x1-1][y2]-sum[x2][y1-1]+sum[x1-1][y1-1]
inline int cal(int x1,int y1,int x2,int y2){ return sum[x2][y2]-sum[x1-1][y2]-sum[x2][y1-1]+sum[x1-1][y1-1];}
int main()
{  cin>>n; for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)scanf("%d",&a[i][j]),sum[i][j]=a[i][j]+sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1]; for(int x2=1;x2<=n;x2++)for(int y2=1;y2<=n;y2++){for(int x1=1;x1<=x2;x1++)for(int y1=1;y1<=y2;y1++)ans=max(ans,cal(x1,y1,x2,y2));}cout<<ans;return 0;
}

方法三: 考虑对于二维的数组进行压缩。枚举行i 和 j 。这两行之间的数压缩成 temp[k] 表示第k列上 i 到 j 的和。所以temp[] 的最大连续和即为最大子矩阵。需要预处理出sum[i][j] 表示第i 列上的前缀和。复杂度 O(n^3)
代码:

#include<bits/stdc++.h>using namespace std;
int n;
int a[500][500],sum[500][500],temp[500];
int ans=-1;
int main()
{cin>>n;for(int i=1;i<=n;i++)  for(int j=1;j<=n;j++) scanf("%d",&a[i][j]);for(int j=1;j<=n;j++)for(int i=1;i<=n;i++)sum[j][i]=sum[j][i-1]+a[i][j];for(int i=1;i<=n;i++)for(int j=i;j<=n;j++){for(int k=1;k<=n;k++) temp[k]=sum[k][j]-sum[k][i-1];int s=0;for(int i=1;i<=n;i++){s+=temp[i];if(s>ans) ans=s;if(s<0) s=0;    }}cout<<ans;return 0;
}

To the MAX(蓝书刷题记录)相关推荐

  1. bzoj3032 七夕祭(蓝书刷题记录)

    引入:经典贪心问题 均分纸牌 有 N 堆纸牌,编号分别为 1,2,-, N.每堆上有若干张,但纸牌总数必为 N 的倍数.可以在任一堆上取若于张纸牌,然后移动.移牌规则为:在编号为 1 堆上取的纸牌,只 ...

  2. CSP-S集训刷题记录

    $ CSP.S $ 集训刷题记录: $ By~wcwcwch $ 一.字符串专题: 1. [模板]$ manacher $ 算法 模型: 求出字符串 $ S $ 中所有回文串的位置及长度. $ sol ...

  3. 算法笔记CodeUp第一至第六章刷题记录

    文章目录 <算法笔记>2.2小节--C/C++快速入门->顺序结构 1.例题1-1-1 按要求输出信息(1) 2.例题1-1-2 按要求输出信息(2) 3.例题1-2-1 求两个整数 ...

  4. LeetCode刷题记录15——21. Merge Two Sorted Lists(easy)

    LeetCode刷题记录15--21. Merge Two Sorted Lists(easy) 目录 LeetCode刷题记录15--21. Merge Two Sorted Lists(easy) ...

  5. $2019$ 暑期刷题记录 $2$(基本算法专题)

    $ 2019 $ 暑期刷题记录 $ 2 $ (基本算法专题) $ by~~wch $ $ BZOJ~1958~Strange~Towers~of~Hanoi $ (动态规划,递推) 题目大意: 求有 ...

  6. 【牛客刷题记录】2021-03-10

    牛客代码刷题记录1 问题一 给定一个数组序列, 需要求选出一个区间, 使得该区间是所有区间中经过如下计算的值最大的一个: 区间中的最小数 * 区间所有数的和最后程序输出经过计算后的最大值即可,不需要输 ...

  7. PAT甲级刷题记录-(AcWing)-(Day06树 8题)

    PAT甲级刷题记录-(AcWing)-(Day06树 8题) 课程来源AcWing 其中AcWing中的题目为翻译好的中文题目 今日刷题列表 1110 Complete Binary Tree 111 ...

  8. BZOJ刷题记录---提高组难度

    BZOJ刷题记录---提高组难度 总目录详见https://blog.csdn.net/mrcrack/article/details/90228694 序号 题号 算法 思想难度 实现难度 总难度 ...

  9. 蓝桥杯官网刷题记录python

    蓝桥杯官网刷题记录python 由于很多题都会在2020.2021.2022年省赛出现,有的在前面文章里做过的这里就不会再说了 一.空间 小蓝准备用 256MB 的内存空间开一个数组,数组的每个元素都 ...

最新文章

  1. 【Swift】变量/常量/类型总结
  2. 压缩感知及应用 源代码_【DMD应用】基于压缩感知超分辨鬼成像
  3. Android项目出现main.xml编译出错和 出现main.out.xml无法编译的解决办法
  4. java上传文件图片
  5. RoBERTa中文预训练模型:RoBERTa for Chinese
  6. React开发(232):传参可以转变思路
  7. 【CodeForces - 190E】Counter Attack (补图bfs,卡常,dsu)
  8. Exchange 2010 批量移动邮箱和增加移动请求并发数
  9. Win 10 安装 Maven 与 Maven 知识点扫盲
  10. 使用pinyin4j完成中文拼音转换
  11. 计算机专业买什么牌子的笔记本,买笔记本电脑什么牌子好(2020年6月笔记本电脑推荐)...
  12. TTL expired in transit (TTL 传输中过期) ping一个ip却返回另一个ip
  13. Add couter , msn qq online status
  14. 2019xupt-acm校赛 题解(C.给你一个666)by出题组tongtong
  15. 案例2:随机森林来填补缺失值
  16. 项目总结-网络舆情分析
  17. 【ROS】—— ROS快速上手(一)
  18. 有源医疗器械常见技术问题及解答汇总
  19. 「Mysql 事务 隔离级别」 读提交和可重复读的区别
  20. WPS编辑分段函数公式技巧,怎么对齐分段条件

热门文章

  1. Liferay Portal 7.4 GA3 and Liferay Commerce 4.0 GA3 Release
  2. Xilinx FPGA 配置之ICAP
  3. 对于anaconda安装的一个小感悟 。
  4. 计算机考研1000题pdf,2020考研张宇1000题(数一、二、三全).pdf
  5. 常用电平标准(TTL、CMOS、LVTTL、LVCMOS、ECL、PECL、LVPECL、RS232)
  6. Go语言中的次方表示
  7. simpread-机器人智能抓取 AI+Grasp
  8. 重学计算机网络(一)计算机网络基础
  9. python自动刷手机视频_万能自动刷视频
  10. 利用js关闭淘宝二维码?