牛客网多校训练第八场A All one Matrix
题目链接:https://ac.nowcoder.com/acm/contest/888/A
题意:求出有多少个不被包含的全1子矩阵
解题思路:首先对列做处理,维护每个位置向上1的个数,然后我们从最后一行开始处理(方便去重),通过单调栈维护每个点左右第一个小于它的值的下标l[j],r[j],那么(l[j]-1,r[j]-1)就是以当前行为矩阵底的左右边界(左右无法再扩展,向上也不能),我们只需维护当前左右边界相同的矩阵,上一次所覆盖到的矩阵上边界,如果这个矩阵底所在行小于前一个相同左右边界矩阵的上边界所在行,那么这两个矩阵就是不存在包含关系的,ans++
#include <bits/stdc++.h>
using namespace std;
const int N = ;
int a[N][N],l[N],r[N],last[N][N];
int main() {
int n, m;
scanf("%d%d", &n, &m);
memset(last,0x3f, sizeof(last));
getchar();
for (int i = ; i <= n; i++)
{
for (int j = ; j <= m; j++)a[i][j] = getchar() == '' ? : a[i - ][j] + ;
getchar();
}
int sta[N],top=;
int ans=;
for (int i = n; i >= ; i--)
{
top=,sta[]=;
for(int j=;j<=m;j++)
{
while (top&&a[i][sta[top]]>=a[i][j])top--;
l[j]=sta[top];
sta[++top]=j;
}
top=,sta[]=m+;
for(int j=m;j>=;j--)
{
while (top&&a[i][sta[top]]>=a[i][j])top--;
r[j]=sta[top];
sta[++top]=j;
}
for(int j=;j<=m;j++)
{
if(a[i][j]&&i<last[l[j]+][r[j]-])//i要小于上次统计过的同左右边界矩阵的上边界
{
ans++;
last[l[j]+][r[j]-]=i-a[i][j]+;//记录当前统计矩阵的上边界
}
}
}
cout<<ans<<endl;
return ;
}
牛客网多校训练第八场A All one Matrix的更多相关文章
- 牛客网多校训练第四场C sequence
(牛客场场有笛卡尔树,场场都不会用笛卡尔树...自闭,补题心得) 题目链接:https://ac.nowcoder.com/acm/contest/884/C 题意:给出两个序列a,b,求max{mi ...
- 牛客网多校训练第三场 C - Shuffle Cards(Splay / rope)
链接: https://www.nowcoder.com/acm/contest/141/C 题意: 给出一个n个元素的序列(1,2,...,n)和m个操作(1≤n,m≤1e5),每个操作给出两个数p ...
- 牛客网多校训练第三场 A - PACM Team(01背包变形 + 记录方案)
链接: https://www.nowcoder.com/acm/contest/141/A 题意: 有n(1≤n≤36)个物品,每个物品有四种代价pi,ai,ci,mi,价值为gi(0≤pi,ai, ...
- 牛客网多校训练第二场D Kth Minimum Clique
链接:https://ac.nowcoder.com/acm/contest/882/D来源:牛客网 Given a vertex-weighted graph with N vertices, fi ...
- 牛客网多校赛第9场 E-Music Game【概率期望】【逆元】
链接:https://www.nowcoder.com/acm/contest/147/E 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524 ...
- 牛客网多校赛第七场J--Sudoku Subrectangle
链接:https://www.nowcoder.com/acm/contest/145/J 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言6553 ...
- 牛客网多校赛第七场--C Bit Compression【位运算】【暴力】
链接:https://www.nowcoder.com/acm/contest/145/C 来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262144K,其他语言524 ...
- 牛客网多校赛第七场A--Minimum Cost Perfect Matching【位运算】【规律】
链接:https://www.nowcoder.com/acm/contest/145/A 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524 ...
- 牛客网多校训练第一场 J - Different Integers(树状数组 + 问题转换)
链接: https://www.nowcoder.com/acm/contest/139/J 题意: 给出n个整数的序列a(1≤ai≤n)和q个询问(1≤n,q≤1e5),每个询问包含两个整数L和R( ...
随机推荐
- 第六周实验总结&学习总结
一.实验目的 (1)掌握类的继承方法 (2)变量的继承和覆盖,方法的继承,重载和覆盖实现 二.实验内容 源代码 package java2; import java.util.Scanner; cla ...
- 使用Nuget重新安装packages.config中的组件的方法
Update-Package -ProjectName 'Ko.app.web' -Reinstall 该语句作用:按照packages.config中给出的程序组件,重新下载安装一遍.
- Cas 4.2.7 OAuth+Rest 实现SSO
关于Cas的认证原理.Rest的使用请参考前面的文章.本文重点阐述使用Rest接口登陆系统和其他单点登录系统打通遇到的问题,及解决问题的思路和过程. 一: 遇到的问题 使用Res ...
- fragment中的onCreateView和onViewCreated的区别和
(1) onViewCreated在onCreateView执行完后立即执行. (2) onCreateView返回的就是fragment要显示的view.
- DQN的第一次尝试 -- 软工结对编程第一次作业
DQN的第一次尝试 在本篇博客中将为大家形象地介绍一下我对DQN的理解,以及我和我的队友如何利用DQN进行黄金点游戏.最后我会总结一下基于我在游戏中看到的结果,得到的dqn使用的注意事项和这次游戏中我 ...
- 项目案例之Pipeline流水线发布JAVA项目(三)
项目案例之Pipeline流水线发布JAVA项目(三) 链接:https://pan.baidu.com/s/1NZZbocZuNwtQS0eGkkglXQ 提取码:z7gj 复制这段内容后打开百度网 ...
- Codeforces 1163F 最短路 + 线段树 (删边最短路)
题意:给你一张无向图,有若干次操作,每次操作会修改一条边的边权,每次修改后输出1到n的最短路.修改相互独立. 思路:我们先以起点和终点为根,找出最短路径树,现在有两种情况: 1:修改的边不是1到n的最 ...
- Jmeter实现百分比业务比例
Jmeter实现百分比业务比例 相较于LoadRunner,jmeter在复杂场景方式貌似略有欠缺.前一段时间,想实现一个功能,如有两个采样器a与b,a采样器与b采样器被执行的概率分别为1/4与3 ...
- 【Linux】windows下编写的脚本文件,放到Linux中无法识别格式
注意:我启动的时候遇到脚本错误 » sh startup.sh -m standalone tanghuang@bogon : command not found : command not foun ...
- 模拟+双指针——cf1244E
排一遍序然后用l,r指针进行移动,每次移动的是靠1,或靠n更近的那个指针 #include<bits/stdc++.h> using namespace std; typedef long ...