无传送门

枚举上下界,上下界确定后在区间中统计答案。
对于这些上下界相同,左右端不同的矩形,可能的贡献对象在每一列的最小值中。
记一下每一列的最小值,然后找左边、右边比它小的第一个位置,就可以统计出该列的贡献了。用单调栈维护即可。

#include<bits/stdc++.h>
#define cs const
#define re register
cs int N=305;
namespace IO{cs int Rlen=1<<22|1;char buf[Rlen],*p1,*p2;inline char gc(){return (p1==p2)&&(p2=(p1=buf)+fread(buf,1,Rlen,stdin),p1==p2)?EOF:*p1++;}template<typename T>inline T get(){char ch=gc();T x=0;while(!isdigit(ch)) ch=gc();while(isdigit(ch)) x=((x+(x<<2))<<1)+(ch^48),ch=gc();return x;}inline int gi(){return get<int>();}
}
using IO::gi;
int n,m,a[N][N],ans[N*N],mn[N];
int L[N],R[N],st[N],pos[N],top=0;
inline void Min(int &x,int y){if(x>y)x=y;}
inline void solve(int up,int dn){for(int re i=1;i<=m;++i) Min(mn[i],a[dn][i]);st[top=1]=0,pos[top]=0;for(int re i=1;i<=m;++i){while(top&&mn[i]<st[top]) --top;L[i]=pos[top],st[++top]=mn[i],pos[top]=i;}st[top=1]=0,pos[top]=m+1;for(int re i=m;i>=1;--i){while(top&&mn[i]<st[top]) --top;R[i]=pos[top],st[++top]=mn[i],pos[top]=i;}for(int re i=1;i<=m;++i)ans[mn[i]]+=(i-L[i])*(R[i]-i);
}
int main(){//  freopen("submatrix.in","r",stdin);n=gi(),m=gi();for(int re i=1;i<=n;++i)for(int re j=1;j<=m;++j)a[i][j]=gi();for(int re i=1;i<=n;++i){memset(mn,0x3f,sizeof mn);for(int re j=i;j<=n;++j) solve(i,j);}for(int re i=1;i<=n*m;++i)printf("%d\n",ans[i]);
}

woj4764 子矩阵相关推荐

  1. 求一个矩阵的最大子矩阵

    #include <iostream> #include <string> #include <assert.h> #include <malloc.h> ...

  2. 最大子矩阵(降维处理)

    题目描述 已知矩阵的大小定义为矩阵中所有元素的和.给定一个矩阵,你的任务是找到最大的非空(大小至少是1 * 1)子矩阵. 比如,如下4 * 4的矩阵 0 -2 -7 0 9 2 -6 2 -4 1 - ...

  3. 带限制条件的最大子矩阵 - 牛客

    链接:https://www.nowcoder.com/acm/contest/131/B 来源:牛客网 题目描述 矩阵 M 包含 R 行 C 列,第 i 行第 j 列的值为 Mi,j. 请寻找一个子 ...

  4. 软件工程——求二维数组所有子矩阵的和的最大值

    题目:返回一个整数数组中最大子数组的和. 要求: 输入一个整形数组,数组里有正数也有负数. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 求所有子数组的和的最大值.要求时间复杂度为 ...

  5. 子矩阵(暴搜(全排列)+DP)

    子矩阵(暴搜(全排列)+DP) 一.题目 子矩阵 时间限制: 1 Sec  内存限制: 128 MB 提交: 1  解决: 1 [提交][状态][讨论版] 题目描述 给出如下定义: 1. 子矩阵:从一 ...

  6. 【降维解法:最大字段和-最大子矩阵和-最终版最大子长方体和】【UVA10755】Garbage Heap...

    突然感觉刷完这一套专题后 码力有了质的飞跃,fighting 努力会有结果! 最大字段和是一个很经典的问题 O(n)算法 而对于最大子矩阵和 可以思考一个这样的想法 枚举上下边界i,j把i到j这一段的 ...

  7. LeetCode Maximal Square(最大子矩阵)

    问题:给出一个由0,1组成的二维数组,求由1组成的最大子矩阵 思路:第一种方式使用暴力法,在遍历二维数组时,如果当前元素是1,则以当前位置为起点,判断先增的一行,一列是否全是1,如果是,则将当前边长度 ...

  8. 利用动态规划求连续数组最大和以及最大子矩阵的和

    题目一: 给定一个整型数组,数组中有正有负,求最大连续子序列的和. 解法: 利用动态规划的思想. 设f(n)表示以a[n]为子序列最后一个元素的最大和,则可以有下面的规则: (1)当f(n-1)< ...

  9. hdu2830 可交换行的最大子矩阵

    题意:       求最大子矩阵,但是相邻的列之间可以相互交换... 思路:       回想下固定的情况,记得那种情况是开俩个数组 L[i] ,R[i],记录小于等于i的最左边和最右边在哪个位置,对 ...

最新文章

  1. MySQL数据表命令
  2. whitepages 被关闭_除了滑动关闭APP影响电池寿命,还有哪些操作触碰到了你的知识盲区?...
  3. FreeNAS安装与应用—安装篇
  4. 读书笔记---图解HTTP(一)
  5. dubbo的监控中心
  6. DxOMark排名更新榜首易主 华为被拉下马:我还会回来的!
  7. Android平台下的ToDoList
  8. tomcat优化配置
  9. 沉没的王国---揭秘滇东自杞国(1)
  10. 【共读】企业信息安全建设与运维指南(一)
  11. 软件工程(软件维护)
  12. SPSS联合Excel进行logistic回归亚组交互效应(交互作用)的可视化分析
  13. 服务器端查看图片库 eog display Xforwarding
  14. 在ADF应用中,能够通过 oracle.adf.view.rich.security.FRAME_BUSTING 参数来使用framebusting功能。
  15. 三、面向对象(高琪java300集+java从入门到精通笔记)
  16. vue 中使用 vue-amap(高德地图) 【'AMapUI' is not defined 】
  17. 使用 Microsoft Symbol Server 获取调试符号文件
  18. 机器学习 识别图片人物动作_一键学习人物识别说明
  19. ESPRIT 2019车铣复合编程基础到五轴 走心机 视频教程
  20. 大数据Hive 面试以及知识点

热门文章

  1. 业务还是功能?2B产品的用户角色问题
  2. go post 参数_go语言使用Swaggo详细教程
  3. AI测试自动化脚本:解析结果txt文件字段并保存至excel文件
  4. 开源鸿蒙、元宇宙、区块链、开源大集合 | AloT开源科技节暨OpenHarmony技术论坛正火热报名中
  5. 第七章第十题(找出最小元素的下标)(Find the subscript of the smallest element)
  6. linux上p图工具,万能P图神器下载-万能P图神器手机版v1.1-Linux公社
  7. 抖音粉丝快速增长的有效方法
  8. 共享单车走红 摩拜单车大数据驱动全民运维
  9. [2011 年终项目总结] 第二章、环境搭建
  10. SUSE Linux11 SP3 安装