Fzu-2190 非提的救赎 (单调栈)
正如你所知道从前有一个人叫s_sin,她拥有着坐拥三千舰狼的梦想!然而天不遂人愿当她踏进hentai collection的大门之后,现实让她领略到了无情。身为一个坚强的妹子,她知道即使出门大破,即使十一连抽全是R,也要坚信着“玄不救非,氪不改命”,而自己是一个欧白这样最初的信仰!
有一天s_sin率领着她的舰狼们到达了某海峡,以一个N*M的矩阵表示,每一个元素为w或者b。其中b为暗礁,暗礁上是不允许有舰狼存在的。而s_sin也相信着一个道理,那就是只有把她的舰狼们组成矩形,她才能有足够的信仰在打败了最终boss之后捞到心仪的新舰狼。请问s_sin有多少种获取足够信仰的方法?(即在N*M的矩阵中有多少个全部由w组成的子矩形)
Input
输入第一行为一个正整数N,M表示有N行M列的矩阵。
接下来N行每行有M个字母为b或者w,如描述中所述。
Output
求N*M的矩阵中有多少个全部由w组成的子矩形。
Sample Input
Sample Output
Hint
1<=M,N<=2000
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
struct thing
{long long n,x;
} stack[2001];
long long n,m,t,sum,ans,num[2001];
char c;
int main()
{cin.sync_with_stdio(false);while(cin>>n>>m){memset(num,0,sizeof(num));ans = 0;for(int i = 1;i <= n;i++){sum = t = 0; for(int j = 1;j <= m;j++){cin>>c;if(c == 'b') num[j] = t = sum = 0;else{num[j]++;thing u;u.x = num[j];u.n = 1;while(t && stack[t].x >= u.x){sum -= stack[t].x*stack[t].n;u.n += stack[t].n;t--; } sum += u.x*u.n;stack[++t] = u;ans += sum; }}}cout<<ans<<endl;}
}
Fzu-2190 非提的救赎 (单调栈)相关推荐
- fzoj Problem 2190 非提的救赎 【单调栈】
题目链接:fzoj Problem 2190 非提的救赎 Problem 2190 非提的救赎 Accept: 106 Submit: 312 Time Limit: 1000 mSec Memory ...
- fzu2190---非提的救赎 (单调栈)
Problem Description 正如你所知道从前有一个人叫s_sin,她拥有着坐拥三千舰狼的梦想!然而天不遂人愿当她踏进hentai collection的大门之后,现实让她领略到了无情.身为 ...
- leetcode:6080. 使数组按非递减顺序排列【单调栈 + 合并】
分析 保存一个单调递减的stack,元素是(num, max+t) 遇到大于等于栈顶的,把栈顶的挪出来,然后记录同一次挪出的最大的max_t 如果挪完st还有剩余的话,max_t ++ 然后ans就是 ...
- A - 非提的救赎 Fzu-2190 (单调栈)
Problem Description 正如你所知道从前有一个人叫s_sin,她拥有着坐拥三千舰狼的梦想!然而天不遂人愿当她踏进hentai collection的大门之后,现实让她领略到了无情.身为 ...
- 后缀数组 ---- 2018~2019icpc焦作H题[后缀数组+st表+二分+单调栈]
题目链接 题目大意: 给出nnn个数,定义f[l,r]f[l,r]f[l,r]表示 区间[l,r][l,r][l,r]的最大值,求所有 子区间的最大值的和,要求相同的子区间只能算一次 比如数列 5 6 ...
- 0x11.基本数据结构 — 栈与单调栈
目录 一.栈 0.AcWing 41. 包含min函数的栈 (自己造栈) 1.AcWing 128. 编辑器 (对顶栈) 2.AcWing 129. 火车进栈 3.AcWing 130. 火车进出栈问 ...
- 【数据结构】单调栈和单调队列 详解+例题剖析
算法:单调栈和单调队列 一.单调栈和单调队列 二.单调栈例题 1.模板题入门 2.不懂不要急,看这道题 三.单调队列例题 1.入门 2.进阶 一.单调栈和单调队列 单调栈和单调队列与普通的栈,队列不同 ...
- 直方图中最大的矩形(遍历与单调栈)
给定 n 个非负整数,用来表示柱状图中各个柱子的高度.每个柱子彼此相邻,且宽度为 1 . 求在该柱状图中,能够勾勒出来的矩形的最大面积. 以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [ ...
- CodeForces - 1407D Discrete Centrifugal Jumps(单调栈+dp)
题目链接:点击查看 题目大意:给出 n 个大楼的高度记为 h,现在需要从第一个大楼到达第 n 个大楼,问最小步数是多少,只有满足以下条件时才能从 i 移动到 j ,设 i < j: 题目分析:无 ...
最新文章
- spark sql读取hive底层_scala – 从一个hive表中读取并使用spark sql写回来
- C++primer第15章节详解面向对象程序设计
- 图书馆如何应用视频直播?
- Crontab作业时间设置
- Spring Boot 之 ResourceHandlerRegistry 通过url直接访问本地服务器上指定路径的资源
- mysql hibernate 分页查询_hibernate分页查询的实现
- python图层_Python叠加矩形框图层2种方法及效果
- 考满分软件测试工程师(实习)面试软达启航面试
- eoc机顶盒wifi服务器未响应,网络机顶盒中桌面配置服务器
- 【Excel】下拉填充相同的数据
- 计算机系统结构安全检测,计算机软件安全检测法综述
- Python文本处理——中文标点符号处理
- Build-dep linux 知乎,apt-get安装和apt-get build-dep有什么区别?
- 如何下载b站视频到本地
- 计算机辅助化学教育,在计算机辅助下的化学教学_计算机辅助制造
- Navigator.sendBeacon()
- Vue CLI3 bable兼容ie11ie10
- 腾讯云服务器+RAKSmart国内外服务器使用记录
- 5G QoS控制原理专题详解-基础概念
- 华虹半导体发力国际MCU市场