Assignment 双向队列
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 双向队列相关推荐
- Python培训教程:Python内置数据结构之双向队列
经常听说Python就是一门执行速度低的语言,可能是你的程序中使用了复杂的算法与数据结构,才会导致程序执行速率低的.在Python的标准库中提供了常见的数据结构工开发者使用,不仅执行速率比较快,还可以 ...
- Python内置数据结构之双向队列
经常听说Python就是一门执行速度低的语言,可能是你的程序中使用了复杂的算法与数据结构,才会导致程序执行速率低的.在Python的标准库中提供了常见的数据结构工开发者使用,不仅执行速率比较快,还可以 ...
- STL中的双向队列deque
1.STL中的双向队列deque deque也是顺序容器的一种,同时也是一个可变长数组.要使用deque,需要包含头文件deque.所有适用于vector的操作都适用于deque. deque和vec ...
- Algs4-1.3.33一个双向队列Deque-双向链表实现
1.3.33Deque.一个双向队列(或者称为deque)和栈或队列类似,但它同时支持在两端添加或删除元素.Deque能够存储一组元素并支持表1.3.9中的API: 表1.3.9泛型双向队列的API ...
- DFS、栈、双向队列:CF264A- Escape from Stones
题目: Squirrel Liss liv Escape from Stonesed in a forest peacefully, but unexpected trouble happens. S ...
- C++ Double Ended Queues(双向队列)
双向队列和向量很相似,但是它允许在容器头部快速插入和删除(就像在尾部一样). Constructors 创建一个新双向队列 Operators 比较和赋值双向队列 assign() 设置双向队列的值 ...
- python3 deque(双向队列)
转载:https://www.cnblogs.com/zhenwei66/p/6598996.html 创建双向队列 import collections d = collections.deque( ...
- sdut 1466 双向队列
双向队列 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem Description 想想双向链表--双 ...
- python内建集合模块collections功能,计数,有序,双向队列
一.官方介绍 这个模块实现了特定目标的容器,以提供Python标准内建容器 dict , list , set , 和 tuple 的替代选择. namedtuple() 创建命名元组子类的工厂函数 ...
最新文章
- 浅谈C/C++中的static和extern关键字
- non-member function cannot have cv-qualifier
- HashMap 1.7工作原理
- (原创)VS2017 C# 运行 Javasrcipt RSA 加密用户名登录 Java开发的服务器
- linux执行jar包命令没有主清单熟悉,jar命令成功完成 java -jar 命令却提示“没有主清单属性”!...
- 【Spring】总结Spring整合Mybatis的底层原理实现步骤
- 多伦多大学计算机科学升大二,加拿大多伦多大学优势专业排名_加拿大多伦多大学优势专业盘点...
- 10 tf.data模块
- 计算机技术应用论文参考,计算机技术应用参考论文(2)
- div 中的i标签如何点击事件_前端优化:语义标签进化史
- Java集合框架最全详解(看这篇就够了)
- 软件测试工具都有哪些
- Project 4:用户画像的建立
- 解决python的OverflowError: int too large to convert to float
- MSN 通信协议学习笔记(转)
- 好用的倒计时APP 可以同时开多个倒数计时器的便签
- 帆软实现分页时第一行和最后两行冻结方式
- 苹果唯冠商标战对iPad3的影响:iPad3太TM贵,肾都不够卖了!
- AHU计科(伪)新生指南
- python长度转换编程_python长度转换代码1000m_Python实现制度转换(货币,温度,长度)...
热门文章
- 螺杆泵matlab,基于Matlab与VC++混合编程的螺杆泵转子型线设计
- python官网下载安装-Python2.7.6下载
- 零基础学python图文版-杭州零基础学python图文版
- 学python可以从事什么工作-学完Python能从事哪些工作?
- 亚马逊首席科学家:揭秘 Alexa 语音识别技术|AI NEXT
- 亚马逊的人工智能将实时语音识别错误率降低了6.2%
- 10 个 PHP 常见安全问题(实例讲解)
- Error in mounted hook: “TypeError: Cannot read property ‘init‘ of undefined“
- 对instance进行二次封装
- Java 实现 RSA 非对称加密算法-加解密和签名验签