Problem Description

正如你所知道从前有一个人叫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

2 3bbbwww2 2bwwb

Sample Output

62

Hint

1<=M,N<=2000

分析:单调栈的应用,计算每个w对答案的贡献。
#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 非提的救赎 (单调栈)相关推荐

  1. fzoj Problem 2190 非提的救赎 【单调栈】

    题目链接:fzoj Problem 2190 非提的救赎 Problem 2190 非提的救赎 Accept: 106 Submit: 312 Time Limit: 1000 mSec Memory ...

  2. fzu2190---非提的救赎 (单调栈)

    Problem Description 正如你所知道从前有一个人叫s_sin,她拥有着坐拥三千舰狼的梦想!然而天不遂人愿当她踏进hentai collection的大门之后,现实让她领略到了无情.身为 ...

  3. leetcode:6080. 使数组按非递减顺序排列【单调栈 + 合并】

    分析 保存一个单调递减的stack,元素是(num, max+t) 遇到大于等于栈顶的,把栈顶的挪出来,然后记录同一次挪出的最大的max_t 如果挪完st还有剩余的话,max_t ++ 然后ans就是 ...

  4. A - 非提的救赎 Fzu-2190 (单调栈)

    Problem Description 正如你所知道从前有一个人叫s_sin,她拥有着坐拥三千舰狼的梦想!然而天不遂人愿当她踏进hentai collection的大门之后,现实让她领略到了无情.身为 ...

  5. 后缀数组 ---- 2018~2019icpc焦作H题[后缀数组+st表+二分+单调栈]

    题目链接 题目大意: 给出nnn个数,定义f[l,r]f[l,r]f[l,r]表示 区间[l,r][l,r][l,r]的最大值,求所有 子区间的最大值的和,要求相同的子区间只能算一次 比如数列 5 6 ...

  6. 0x11.基本数据结构 — 栈与单调栈

    目录 一.栈 0.AcWing 41. 包含min函数的栈 (自己造栈) 1.AcWing 128. 编辑器 (对顶栈) 2.AcWing 129. 火车进栈 3.AcWing 130. 火车进出栈问 ...

  7. 【数据结构】单调栈和单调队列 详解+例题剖析

    算法:单调栈和单调队列 一.单调栈和单调队列 二.单调栈例题 1.模板题入门 2.不懂不要急,看这道题 三.单调队列例题 1.入门 2.进阶 一.单调栈和单调队列 单调栈和单调队列与普通的栈,队列不同 ...

  8. 直方图中最大的矩形(遍历与单调栈)

    给定 n 个非负整数,用来表示柱状图中各个柱子的高度.每个柱子彼此相邻,且宽度为 1 . 求在该柱状图中,能够勾勒出来的矩形的最大面积. 以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [ ...

  9. CodeForces - 1407D Discrete Centrifugal Jumps(单调栈+dp)

    题目链接:点击查看 题目大意:给出 n 个大楼的高度记为 h,现在需要从第一个大楼到达第 n 个大楼,问最小步数是多少,只有满足以下条件时才能从 i 移动到 j ,设 i < j: 题目分析:无 ...

最新文章

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

热门文章

  1. 莫纳什大学计算机申请案例,莫纳什大学计算机系统工程学士申请.pdf
  2. 阿里云客服联系方式汇总
  3. 东方通TongWeb创建GBase数据库连接池
  4. 二进制安装Kubernetes(k8s) v1.25.0 IPv4/IPv6双栈
  5. 怎样在手机设置无线网络连接服务器,如何用手机设置wifi路由器?
  6. 演讲 口才 思维导图
  7. M24C08-RMN6TP
  8. 电脑读卡器,读卡器是什么
  9. celery异步——生产者消费者
  10. JS 生成永不重复的随机序列号