http://acm.hdu.edu.cn/webcontest/contest_showproblem.php?pid=1001&ojid=0&cid=12578&hide=0

题意:t测试用例,n个数,给定的值k,求有几个连续的子区间,该区间max-min<k。

思路:双向队列。一个储存区间的最大值,一个储存区间的最小值,设立两个指针i,j,i一直往后走,当最大值-最小值>=k时,这是当前满足条件的最大区间,则其i-1-j+1个子区间都可以,当i走到数组的末尾时,j可能没有走到,这时j到i都可作为子区间。

感想:区间保存最大值,最小值,又在移动的一般都用到队列。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{int t,n,k,i,j,a[100005];deque<int>high;deque<int>low;ll ans;scanf("%d",&t);while(t--){high.clear();low.clear();ans=0;scanf("%d%d",&n,&k);for(i=1;i<=n;i++)scanf("%d",&a[i]);for(j=i=1;i<=n;i++)//指针{while(!high.empty()&&high.back()<a[i])high.pop_back();high.push_back(a[i]);while(!low.empty()&&low.back()>a[i])low.pop_back();low.push_back(a[i]);while(!high.empty()&&!low.empty()&&(high.front()-low.front()>=k))//判断{ans+=i-j;if(high.front()==a[j])high.pop_front();if(low.front()==a[j])low.pop_front();j++;//cout<<j<<"!"<<endl;//cout<<high.front()<<" "<<low.front()<<endl;}}while(j<=n)//到数组尾部,j没到{ans+=i-j;j++;}printf("%lld\n",ans);///cout<<ans<<endl;}
}

Assignment 双向队列相关推荐

  1. Python培训教程:Python内置数据结构之双向队列

    经常听说Python就是一门执行速度低的语言,可能是你的程序中使用了复杂的算法与数据结构,才会导致程序执行速率低的.在Python的标准库中提供了常见的数据结构工开发者使用,不仅执行速率比较快,还可以 ...

  2. Python内置数据结构之双向队列

    经常听说Python就是一门执行速度低的语言,可能是你的程序中使用了复杂的算法与数据结构,才会导致程序执行速率低的.在Python的标准库中提供了常见的数据结构工开发者使用,不仅执行速率比较快,还可以 ...

  3. STL中的双向队列deque

    1.STL中的双向队列deque deque也是顺序容器的一种,同时也是一个可变长数组.要使用deque,需要包含头文件deque.所有适用于vector的操作都适用于deque. deque和vec ...

  4. Algs4-1.3.33一个双向队列Deque-双向链表实现

    1.3.33Deque.一个双向队列(或者称为deque)和栈或队列类似,但它同时支持在两端添加或删除元素.Deque能够存储一组元素并支持表1.3.9中的API: 表1.3.9泛型双向队列的API ...

  5. DFS、栈、双向队列:CF264A- Escape from Stones

    题目: Squirrel Liss liv Escape from Stonesed in a forest peacefully, but unexpected trouble happens. S ...

  6. C++ Double Ended Queues(双向队列)

    双向队列和向量很相似,但是它允许在容器头部快速插入和删除(就像在尾部一样). Constructors 创建一个新双向队列 Operators 比较和赋值双向队列 assign() 设置双向队列的值 ...

  7. python3 deque(双向队列)

    转载:https://www.cnblogs.com/zhenwei66/p/6598996.html 创建双向队列 import collections d = collections.deque( ...

  8. sdut 1466 双向队列

    双向队列 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem Description 想想双向链表--双 ...

  9. python内建集合模块collections功能,计数,有序,双向队列

    一.官方介绍 这个模块实现了特定目标的容器,以提供Python标准内建容器 dict , list , set , 和 tuple 的替代选择. namedtuple() 创建命名元组子类的工厂函数 ...

最新文章

  1. 浅谈C/C++中的static和extern关键字
  2. non-member function cannot have cv-qualifier
  3. HashMap 1.7工作原理
  4. (原创)VS2017 C# 运行 Javasrcipt RSA 加密用户名登录 Java开发的服务器
  5. linux执行jar包命令没有主清单熟悉,jar命令成功完成 java -jar 命令却提示“没有主清单属性”!...
  6. 【Spring】总结Spring整合Mybatis的底层原理实现步骤
  7. 多伦多大学计算机科学升大二,加拿大多伦多大学优势专业排名_加拿大多伦多大学优势专业盘点...
  8. 10 tf.data模块
  9. 计算机技术应用论文参考,计算机技术应用参考论文(2)
  10. div 中的i标签如何点击事件_前端优化:语义标签进化史
  11. Java集合框架最全详解(看这篇就够了)
  12. 软件测试工具都有哪些
  13. Project 4:用户画像的建立
  14. 解决python的OverflowError: int too large to convert to float
  15. MSN 通信协议学习笔记(转)
  16. 好用的倒计时APP 可以同时开多个倒数计时器的便签
  17. 帆软实现分页时第一行和最后两行冻结方式
  18. 苹果唯冠商标战对iPad3的影响:iPad3太TM贵,肾都不够卖了!
  19. AHU计科(伪)新生指南
  20. python长度转换编程_python长度转换代码1000m_Python实现制度转换(货币,温度,长度)...

热门文章

  1. 螺杆泵matlab,基于Matlab与VC++混合编程的螺杆泵转子型线设计
  2. python官网下载安装-Python2.7.6下载
  3. 零基础学python图文版-杭州零基础学python图文版
  4. 学python可以从事什么工作-学完Python能从事哪些工作?
  5. 亚马逊首席科学家:揭秘 Alexa 语音识别技术|AI NEXT
  6. 亚马逊的人工智能将实时语音识别错误率降低了6.2%
  7. 10 个 PHP 常见安全问题(实例讲解)
  8. Error in mounted hook: “TypeError: Cannot read property ‘init‘ of undefined“
  9. 对instance进行二次封装
  10. Java 实现 RSA 非对称加密算法-加解密和签名验签