题目链接:点击查看

题目大意:给出n只牛,高度参差不齐,所有的牛都朝向右边,他们可以看到右边所有没有遮挡并且比自己低的牛,问每只牛可以看到的牛的数量总和是多少

题目分析:这个题目让求每只牛看到的牛的数量,我们可以转换一下,转化成每只牛被看到过多少次,这样就可以转换成单调队列/单调栈的题目了,大概就是维护一下当前位置x之前有多少头牛比自己高即可,很简单的实现,直接看代码吧

代码:

单调栈:

#include<iostream>
#include<cstdlib>
#include<string>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<climits>
#include<cmath>
#include<cctype>
#include<stack>
#include<list>
#include<vector>
#include<set>
#include<map>
#include<sstream>
#include<deque>
using namespace std;typedef long long LL;const int inf=0x3f3f3f3f;const int N=5e5+100;int main()
{
//  freopen("input.txt","r",stdin);
//  ios::sync_with_stdio(false);int n;while(scanf("%d",&n)!=EOF){stack<int>st;LL ans=0;while(n--){int num;scanf("%d",&num);while(st.size()&&st.top()<=num)st.pop();ans+=st.size();st.push(num);}printf("%lld\n",ans);}return 0;
}

单调队列:

#include<iostream>
#include<cstdlib>
#include<string>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<climits>
#include<cmath>
#include<cctype>
#include<stack>
#include<list>
#include<vector>
#include<set>
#include<map>
#include<sstream>
#include<deque>
using namespace std;typedef long long LL;const int inf=0x3f3f3f3f;const int N=5e5+100;int main()
{
//  freopen("input.txt","r",stdin);
//  ios::sync_with_stdio(false);int n;while(scanf("%d",&n)!=EOF){deque<int>q;LL ans=0;while(n--){int num;scanf("%d",&num);while(q.size()&&q.back()<=num)q.pop_back();ans+=q.size();q.push_back(num);}printf("%lld\n",ans);}return 0;
}

POJ - 3250 Bad Hair Day(单调队列/单调栈)相关推荐

  1. 【POJ - 3250 】Bad Hair Day (单调栈)

    题干: Some of Farmer John's N cows (1 ≤ N ≤ 80,000) are having a bad hair day! Since each cow is self- ...

  2. 入门经典_Chap08_题解总结:极角扫描法 滑动窗口 单调队列 单调栈

    总结  本章主要关注一个重要的问题 – 单调队列和单调栈的使用  同时还有一些其他的问题,如扫描法,递归的思想, 构造, 分治, 二分等 知识点 单调队列 和 单调栈 题目 UVA - 1606 Am ...

  3. 数据结构录 之 单调队列单调栈。

    队列和栈是很常见的应用,大部分算法中都能见到他们的影子. 而单纯的队列和栈经常不能满足需求,所以需要一些很神奇的队列和栈的扩展. 其中最出名的应该是优先队列吧我觉得,然后还有两种比较小众的扩展就是单调 ...

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

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

  5. tyvj1305 最大子序和 【单调队列优化dp】

    描述 输入一个长度为n的整数序列,从中找出一段不超过M的连续子序列,使得整个序列的和最大. 例如 1,-3,5,1,-2,3 当m=4时,S=5+1-2+3=7 当m=2或m=3时,S=5+1=6 输 ...

  6. 瑰丽华尔兹--单调队列

    看到这道题,的标签 [我csdn的博客] (https://blog.csdn.net/qq_42421714/article/details/84963779) 我洛谷的博客 说明啊,它可以用单调队 ...

  7. 算法学习12: 单调队列和单调栈

    算法学习12: 单调队列和单调栈 单调队列 单调队列解决的问题: 窗口内最大/最小值的更新结构 单调队列的结构和操作 单调队列的应用 题目一: 生成窗口最大值数组[leetcode 239](http ...

  8. 【C++】单调队列 详解

    今天我们来讲一下单调队列与栈. 这两种数据结构虽然没有在c++的stl中有直接的实现,但是在做题过程中,很容易有单调队列(栈)的使用,尤其是在一些比较难的题目中. 目录 单调队列 1.1 单调队列介绍 ...

  9. POJ 3250 Bad Hair Day【单调队列】

    Description Some of Farmer John'sNcows (1 ≤N≤ 80,000) are having a bad hair day! Since each cow is s ...

最新文章

  1. Android adb.exe程序启动不起来处理方法
  2. artTemplate/template.js模板将时间戳格式化为正常的日期
  3. hibernate的环境搭建
  4. 如何在程序中画出实际大小为7CM半径的圆
  5. 无法将mysql服务器连接到_无法从java连接到mysql服务器
  6. ping不同的网卡方法
  7. scala apply是什么
  8. IINA+ :在IINA播放器上观看直播
  9. FFmpeg + SDL 的视频播放器的制作视频(雷神,雷霄骅)
  10. java 手写签名_无纸化办公中手写签名的实现
  11. 宝鸡渭滨区11―12学年度第一学期高二期末联考试卷高二地理
  12. 【微信公众号-订阅号发送群发消息】
  13. 免费地图资源(持续更新)
  14. Doubly Linked List in Python
  15. tensorflow正则化添加方法整理
  16. 中餐厅服务器维护,《中餐厅5》首播,龚俊仅出镜10分钟,两个细节表明他恐不会常驻...
  17. PS出现“不能完成存储为命令,因为没有足够的内存RAM” 设置性能时“要求96和8之间的整数。已插入最接近的数值”
  18. 东北大学计算机实验班,东北大学理科试验班
  19. 入职宇宙条之后,我知道了这些
  20. DORIS单节点部署

热门文章

  1. MyBatis 源码解读-配置解析过程
  2. Redis中的可用性保证之Sentinel故障转移
  3. 数据源(连接池)开发步骤
  4. logback的FileAppender
  5. 消息队列入门案例-环境搭建
  6. 单例模式源码分析(jdk+spring+mybatis)
  7. dell电脑重装linux系统,重装系统出现问题,如何解决?
  8. 电路上的ESR是什么意思?
  9. PCB线宽与电流的关系
  10. 用户超5亿,三年投10亿,开发者如何抢滩支付宝小程序蓝海?