P3400【仓鼠窝 】
思路清奇,代码简洁的好题
问题大体分两部:
- 记录子矩阵个数,统计每一个点作为右下角时可以得到多少矩形,加起来就是答案
- 剪掉墙挡住的地方
考虑从右下角开始,如果有0已经挡住了矩阵,那么更靠左、上的0都卵用没有->单调栈
#include<bits/stdc++.h>
using namespace std;
int n,m,a[3005][3005];
int up[3005],s[3005],top;
long long sum[3005],ans=0;
int main()
{scanf("%d%d",&n,&m);for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){scanf("%d",&a[i][j]);}}for(int i=1;i<=n;i++){top=0;//维护最近的0 for(int j=1;j<=m;j++){if(!a[i][j]) up[j]=i;//墙 while(top&&up[s[top]]<up[j]) top--; //远的0不要 s[++top]=j;//高度 sum[top]=sum[top-1]+(i-up[s[top]])*(s[top]-s[top-1]);//左边的答案继承+新形成的矩形方案(新的最大矩形长 ×宽)ans+=sum[top];}}printf("%lld",ans);return 0;
}
P3400【仓鼠窝 】相关推荐
- 单调栈求全1(或全0)子矩阵的个数 洛谷P5300与或和 P3400仓鼠窝
爆零好爽,被中学生虐好爽,还好我毕业得早 求全1(或全0)子矩阵的个数,看了题解有好几种思路,我学了三种,但有两种不是很理解,而且也没另外那个跑得快,所以简单讲述一一下我会的那种来自Caro23333 ...
- 洛谷P3400 仓鼠窝(单调栈)
P3400 仓鼠窝 题目描述 萌萌哒的Created equal是一只小仓鼠,小仓鼠自然有仓鼠窝啦. 仓鼠窝是一个由n*m个格子组成的行数为n.列数为m的矩阵.小仓鼠现在想要知道,这个矩阵中有多少个子 ...
- 洛谷 P3400 仓鼠窝
题目描述 萌萌哒的Created equal是一只小仓鼠,小仓鼠自然有仓鼠窝啦. 仓鼠窝是一个由n*m个格子组成的行数为n.列数为m的矩阵.小仓鼠现在想要知道,这个矩阵中有多少个子矩阵!(实际上就是有 ...
- 洛谷10月月赛Round.1| P3400 仓鼠窝[单调栈]
题目描述 萌萌哒的Created equal是一只小仓鼠,小仓鼠自然有仓鼠窝啦. 仓鼠窝是一个由n*m个格子组成的行数为n.列数为m的矩阵.小仓鼠现在想要知道,这个矩阵中有多少个子矩阵!(实际上就是有 ...
- [LUOGU]P3400 仓鼠窝
传送门 首先分析问题,我们要求出所有的子矩形,不妨考虑以每一点为右下角的子矩形的个数,加起来正好就是总的子矩形数了. 然后考虑每一个点为左下角时的方案数,我们考虑每在它左上的点是否可以作为矩形的左上角 ...
- P3400 仓鼠窝 (单调栈 dp
添加链接描述 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=3e3+9; l ...
- P3400 仓鼠窝 (单调栈 dp O(n*m
添加链接描述 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=3e3+9; l ...
- 【洛谷P3400】仓鼠窝
题目描述 萌萌哒的Created equal是一只小仓鼠,小仓鼠自然有仓鼠窝啦. 仓鼠窝是一个由n*m个格子组成的行数为n.列数为m的矩阵.小仓鼠现在想要知道,这个矩阵中有多少个子矩阵!(实际上就是有 ...
- 【洛咕P3400】仓鼠窝【单调栈】
死灵复活时间ouo 闲的没事儿才写博客的死鸽子 这道题为P5300埋下了很好的伏笔qwq解法是差不多的. 一个矩阵里面的子矩阵有多少个很好求 如果加上了一些限制,我们就要重新考虑. 第一个逻辑是把大问 ...
最新文章
- c++中ifstream一次读取整个文件
- i7跑服务器系统,i7主机做服务器
- vue计算属性:computed示例
- python用pandas提取行列_python- pandas 不删除符合条件的行和列
- 将Spring集成到旧版应用程序中
- 《程序员代码面试指南》第二章 链表问题 反转部分单向链表
- 安卓应用安全指南 4.2.2 创建/使用广播接收器 规则书
- 中西造园水法浅比【ZZ】
- linux终端快捷方式
- linux编码合适修改_CentOS升级Linux内核备忘录
- 漫画:如何实现大整数相乘?
- 电子商务网站建设规划方案
- java毕业设计万科集团社区管理系统mybatis+源码+调试部署+系统+数据库+lw
- 关于STM32单片机延时微妙(delay_us)函数-hal库
- WebGL之3D地球
- lvm扩容lv扩容操作记录
- HTML5期末大作业:商城网站设计——仿天猫商城(9页) HTML+CSS大作业_ 网页制作作业_疫情防控网页设计...
- Android Studio掷骰子生成随机数(Java)
- PCB板HDI板几阶是什么意思
- 计算机学院的师弟师妹们,请不要去餐馆打工了