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. spark sql读取hive底层_scala – 从一个hive表中读取并使用spark sql写回来
  2. C++primer第15章节详解面向对象程序设计
  3. 图书馆如何应用视频直播?
  4. Crontab作业时间设置
  5. Spring Boot 之 ResourceHandlerRegistry 通过url直接访问本地服务器上指定路径的资源
  6. mysql hibernate 分页查询_hibernate分页查询的实现
  7. python图层_Python叠加矩形框图层2种方法及效果
  8. 考满分软件测试工程师(实习)面试软达启航面试
  9. eoc机顶盒wifi服务器未响应,网络机顶盒中桌面配置服务器
  10. 【Excel】下拉填充相同的数据
  11. 计算机系统结构安全检测,计算机软件安全检测法综述
  12. Python文本处理——中文标点符号处理
  13. Build-dep linux 知乎,apt-get安装和apt-get build-dep有什么区别?
  14. 如何下载b站视频到本地
  15. 计算机辅助化学教育,在计算机辅助下的化学教学_计算机辅助制造
  16. Navigator.sendBeacon()
  17. Vue CLI3 bable兼容ie11ie10
  18. 腾讯云服务器+RAKSmart国内外服务器使用记录
  19. 5G QoS控制原理专题详解-基础概念
  20. 华虹半导体发力国际MCU市场

热门文章

  1. 十面阿里,七面头条,六个Offer,春招结束
  2. 网页复制内容修改(解决复制文本多空格问题,带标注信息(如版权信息))
  3. 如何在OpenAI创建一个api key(chatgpt)?
  4. windows删除多余用户及其文件夹
  5. 微信支付商户接入(一)
  6. word文件打开之后不能编辑是怎么回事
  7. 利用Python做一个小姐姐词云跳舞视频
  8. 【数据库】SRA数据库介绍及数据下载
  9. win10用户名改了以后,C盘中用户文件夹下的以用户名命名的文件夹名字没有变化?还是之前的用户
  10. java隐藏类_java Class类中隐藏和覆盖的区别