题目描述

萌萌哒的Created equal是一只小仓鼠,小仓鼠自然有仓鼠窝啦。

仓鼠窝是一个由n*m个格子组成的行数为n、列数为m的矩阵。小仓鼠现在想要知道,这个矩阵中有多少个子矩阵!(实际上就是有多少个子长方形嘛。)比如说有一个2*3的矩阵,那么1*1的子矩阵有6个,1*2的子矩阵有4个,1*3的子矩阵有2个,2*1的子矩阵有3个,2*2的子矩阵有2个,2*3的子矩阵有1个,所以子矩阵共有6+4+2+3+2+1=18个。

可是仓鼠窝中有的格子被破坏了。现在小仓鼠想要知道,有多少个内部不含被破坏的格子的子矩阵!

输入输出格式

输入格式:

第一行两个正整数n和m,分别表示仓鼠窝的行数n、列数m。

接下来n行,每行m个数,每个数代表对应的格子,非0即1。若为0,表示这个格子被破坏;反之代表这个格子是完好无损的。

输出格式:

仅一个正整数,表示未被破坏的子矩阵的个数。

输入输出样例

输入样例#1:

3 4
1 1 1 1
1 0 1 1
1 1 0 1

输出样例#1:

26

说明

本题时限2s,内存限制256M,因新评测机速度较为接近NOIP评测机速度,请注意常数问题带来的影响。

No    n=    m=    备注
1    2    2    无
2    3    3    无
3    5    5    无
4    10    10    无
5    2000    2000    所有格子均未被破坏
6    3000    3000    所有格子均未被破坏
7    2500    3000    有且仅有一个格子被破坏
8    3000    2500    有且仅有一个格子被破坏
9    200    200    无
10    500    500    无
11    500    500    无
12    500    500    无
13    1000    1000    无
14    1000    1000    无
15    1000    1500    无
16    2500    2500    无
17    2500    3000    无
18    3000    2500    无
19    3000    3000    无
20    3000    3000    无

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

数论+单调栈+pair~

和上一道差不多,但是读入的时候要特别注意~正常读入也可以,但是不是优化一下比较好?getchar真是神奇啊……

然后,洛谷玄学评测机,第一次WA,把数组改大就A了……无言以对……

具体解释见http://blog.csdn.net/senyelicone/article/details/52735436 ~

#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
#define ll long longint n,m,tot[3001],num,s[3001][3001];
ll ans,cnt;
pair<int,int> sta[3001];int read()
{int t=0;char ss=getchar();while(ss<'0' || ss>'9') ss=getchar();while(ss>='0' && ss<='9'){t=t*10+ss-'0';ss=getchar();}return t;
}int main()
{scanf("%d%d",&n,&m);for(int i=1;i<=n;i++)for(int j=1;j<=m;j++) s[i][j]=read();for(int i=1;i<=n;i++){pair<int,int> tmp;num=cnt=0;for(int j=1;j<=m;j++){if(s[i][j]==0){num=cnt=0;tot[j]=0;continue;}tmp.first=++tot[j];tmp.second=1;while(num && sta[num].first>=tmp.first){tmp.second+=sta[num].second;cnt-=sta[num].first*sta[num].second;num--;}sta[++num]=tmp;cnt+=tmp.first*tmp.second;ans+=cnt;} }printf("%lld\n",ans);return 0;
}

洛谷 P3400 仓鼠窝相关推荐

  1. 洛谷P3400 仓鼠窝(单调栈)

    P3400 仓鼠窝 题目描述 萌萌哒的Created equal是一只小仓鼠,小仓鼠自然有仓鼠窝啦. 仓鼠窝是一个由n*m个格子组成的行数为n.列数为m的矩阵.小仓鼠现在想要知道,这个矩阵中有多少个子 ...

  2. 单调栈求全1(或全0)子矩阵的个数 洛谷P5300与或和 P3400仓鼠窝

    爆零好爽,被中学生虐好爽,还好我毕业得早 求全1(或全0)子矩阵的个数,看了题解有好几种思路,我学了三种,但有两种不是很理解,而且也没另外那个跑得快,所以简单讲述一一下我会的那种来自Caro23333 ...

  3. 洛谷P3412 仓鼠找$Sugar\ II$题解(期望+统计论?)

    洛谷P3412 仓鼠找\(Sugar\ II\)题解(期望+统计论?) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1327573 原题链接:洛谷P3412 ...

  4. 【洛谷P3400】仓鼠窝

    题目描述 萌萌哒的Created equal是一只小仓鼠,小仓鼠自然有仓鼠窝啦. 仓鼠窝是一个由n*m个格子组成的行数为n.列数为m的矩阵.小仓鼠现在想要知道,这个矩阵中有多少个子矩阵!(实际上就是有 ...

  5. 洛谷10月月赛Round.1| P3400 仓鼠窝[单调栈]

    题目描述 萌萌哒的Created equal是一只小仓鼠,小仓鼠自然有仓鼠窝啦. 仓鼠窝是一个由n*m个格子组成的行数为n.列数为m的矩阵.小仓鼠现在想要知道,这个矩阵中有多少个子矩阵!(实际上就是有 ...

  6. 洛谷 P3398 仓鼠找 sugar

    仓鼠找 sugar 题目描述 小仓鼠的和他的基(mei)友(zi)sugar住在地下洞穴中,每个节点的编号为 1 1 1~ n n n.地下洞穴是一个树形结构.这一天小仓鼠打算从从他的卧室( a a ...

  7. 洛谷 3398 仓鼠找sugar 【模板】判断树上两链有交

    [题解] 题意就是判断树上两条链是否有交.口诀是"判有交,此链有彼祖".即其中一条链的端点的Lca在另一条链上. 我们设两条链的端点的Lca中深度较大的为L2,对L2与另一条链的两 ...

  8. [LUOGU]P3400 仓鼠窝

    传送门 首先分析问题,我们要求出所有的子矩形,不妨考虑以每一点为右下角的子矩形的个数,加起来正好就是总的子矩形数了. 然后考虑每一个点为左下角时的方案数,我们考虑每在它左上的点是否可以作为矩形的左上角 ...

  9. P3400 仓鼠窝 (单调栈 dp

    添加链接描述 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=3e3+9; l ...

最新文章

  1. rhel6Inode详解
  2. Mybatis-Plus 支持分库分表了?-官方神器发布!
  3. MySQL入门,了解下、
  4. ie-css3.htc参数无效,ie-css3.htc怎么用?
  5. C#窗体间的数据传值(转)
  6. android应用开发(16)---AndroidManifest.xml
  7. jsp中动态include与静态include的区别
  8. ArrayList的初始化常用方式,扩容,和应用(去重)
  9. (转)中国著名黑客你知道多少?
  10. uigetfile使用方法
  11. html如何制作斜线表头表格,2种方法教你怎样在WPS excel中绘制表格斜线表头
  12. 百度收录提交工具-免费主动提交百度快速收录软件
  13. vscode环境搭建:配置prettier
  14. Nginx if语句配置多重判断
  15. 信息系统项目管理师2019年上半年上午试题解析(四)
  16. 基于MATLAB APP Designer 和 Python 的音视频剪辑
  17. 站上风口,文心一言任重道远
  18. 电脑文件怎么显示后缀名
  19. go拼接字符串不如php,golang 字符串拼接性能的对比分析
  20. python进行机器学习(四)之模型验证与参数选择

热门文章

  1. 无法在Android手机上拨打或接听电话,如何解决
  2. Mutex与Semaphore 第二部分 互斥锁
  3. 关于Android系统中“你的手机上未安装应用程序”问题
  4. 文件中查找并删除feff
  5. Photoshop cc 2018基础
  6. npm ERR! gyp verb等一系列错
  7. ReentrantLock源码走读分析
  8. 映射网络驱动器错误:无法找到网络名,该设备或资源未设置为接受端口,“文件和打印机共享(SMB)”上的连接。
  9. HTML+CSS网页制作——人生指南
  10. UVA11400 简单DP