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: 题目分析:无 ...
最新文章
- 一个被 CEO 逼疯的技术负责人的检讨书
- [Remoting专题系列] 十一:事件
- 被程序员怼完被自己人怼,产品经理就这样被逼哭了!
- Web前端开发初学者十问集锦(4)
- python门牌制作
- 将input 的文本框改为不可编辑状态
- CreateThread _beginThread _begintheadex AfxBeginThead思考
- 高级网络配置+Ipv6
- Silverlight 5 RC新特性探索系列:15.Silverlight 5 RC 对OpenType字体属性的支持
- 设备接入(LWM2M协议)
- 【单片机毕业设计】【mcuclub-jj-035】基于单片机的保险柜的设计
- unity LineRender结合多点触摸 实现拖拽 重复画线
- 【NLP】常见的自然语言处理任务和技术
- 新浪短网址API接口(3月15日更新)
- 文件以及文件夹的管理
- 移动指数加权平均笔记
- JAVA中关于可变和不可变类型的理解
- 黑鱼资源完整模板分享 已本地化CSS JS
- SSM整合(从创表到部署)保姆级别教程超细
- 笔记本电脑常用的快捷键