寻找一个区间,满足:其中的最大值减最小值在[m,k]的范围内,输出最大的区间长度。

思路:维护2个单调队列,一个递增,一个递减。

用一个now记录现在的区间的起点,如果大的数-小的数比k还大,则可以丢弃小的那个区间,更新now。

最后的答案就是 max(ans,i-now);

#include<cstdio>
#include<queue>
#include<cstring>
#include<algorithm>
using namespace std;
inline int ReadInt()
{char ch = getchar();int data = 0;while (ch < '0' || ch > '9'){ch = getchar();}do{data = data*10 + ch-'0';ch = getchar();}while (ch >= '0' && ch <= '9');return data;
}
int n,sma,big;
inline bool isok(int x)
{if(x>=sma&&x<=big) return true;return false;
}
int a[100005];
int main()
{while(scanf("%d%d%d",&n,&sma,&big)!=EOF){deque<int> qs;deque<int> qb;int now=0,ans=0;int flag=0;int k;for(int i=1;i<=n;i++){a[i]=ReadInt();}for(int i=1;i<=n;i++){while(!qs.empty()&&a[i]<=a[qs.back()]) qs.pop_back();qs.push_back(i);while(!qb.empty()&&a[i]>=a[qb.back()]) qb.pop_back();qb.push_back(i);while(!qb.empty()&&!qs.empty()&&a[qb.front()]-a[qs.front()]>big){if(qb.front()>qs.front()){now=qs.front();qs.pop_front();}else{now=qb.front();qb.pop_front();}}if(isok(a[qb.front()]-a[qs.front()])){ans=max(ans,i-now);}}printf("%d\n",ans);}return 0;
}

hdu 3530 Subsequence 单调队列相关推荐

  1. HDU - 3530 Subsequence(单调队列+思维)

    题目链接:点击查看 题目大意:给出一段长度为n的序列,现在给出一个m和一个k,必须满足一段连续区间内的最大值与最小值的差值大于等于m并且小于等于k,问满足条件的连续区间的最大长度 题目分析:一开始看到 ...

  2. hdu 3401 Trade(单调队列优化dp)

    hdu 3401 Trade(单调队列优化dp) 题意:lxhgww喜欢炒股票,他可以在第i天买入或者卖出若干张股票(一天只能买或者卖),两个交易日之间至少相隔w天,问他t天后最多能赚多少. 解题思路 ...

  3. HDU 5289 Assignment(单调队列)

    题意:给T足数据,然后每组一个n和k,表示n个数,k表示最大同意的能力差,接下来n个数表示n个人的能力,求能力差在k之内的区间有几个 分析:维护一个区间的最大值和最小值,使得他们的差小于k,于是採用单 ...

  4. HDU 3530 Subsequence

    这道题很有意思,需要巧妙地套用单调队列 首先我们要明确几件事情 1.假设我们现在知道序列(i,j)是符合标准的,那么如果第j+1个元素不比(i,j)最大值大也不比最小值小,那么(i,j+1)也是合法的 ...

  5. HDU 6319(单调队列)

    传送门 题面: Problem A. Ascending Rating Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 524288/ ...

  6. Fxx and game HDU - 5945(单调队列优化dp)

    思路:考虑反着dp,从dp[1]倒推dp[x] 因为dp[i]<=dp[j]  j<i  ,所以考虑用单调队列来优化. 除法不用考虑,考虑加法就行. 代码: #include <bi ...

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

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

  8. 单调队列————[USACO09MAR]向右看齐Look Up

    先了解一下单调队列: 很明显的具有单调性 分为单调递增和单调递减两种,简单点讲就是维护队头为最大值或者为最小值 (建议采用双向队列  比较好写) 具体步骤:(这个是单调递减) 如果队列非空且当前值比队 ...

  9. hdu 3706 Second My Problem First 单调队列

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3706 Second My Problem First Time Limit: 12000/4000 M ...

最新文章

  1. 重上热搜!北师大教授:给非洲留学生1年10万奖学金真的不算多!
  2. 细说Redis分布式锁
  3. 论MORMOT序列的JSON格式
  4. SAP HTML5 Application Repository
  5. 【HTML学习】——HTML常见标签属性和方法介绍
  6. 同时对view延时执行两个动画时候的现象
  7. 【英语学习】【WOTD】peer-to-peer 释义/词源/示例
  8. TortoiseSVN更改账号的方法
  9. bzoj1079 [SCOI2008]着色方案
  10. TFS无法连接:TF31002
  11. 重新获取新的IP地址的方法
  12. 唐奇安通道策略-python量化【backtrader回测】
  13. uint8_t范围_uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型 - 大总结
  14. R语言 Kmeans聚类、PAM聚类、层次聚类、EM聚类
  15. 自定义View时,用到Paint Canvas的一些温故,PropertyAnimation中的ObjectAnimator(动画三,“大大姐”的旋转跳跃)...
  16. [error]: Found option without preceding group in config file ....\my.ini at line:1
  17. kafka报错:The Cluster ID doesn‘t match stored clusterId Some in meta.properties
  18. python多轴图_python中用Matplotlib做多个纵轴 (多y轴)
  19. 基于STM32的贪吃蛇小游戏
  20. Potplayer倍速播放声音失真(回音)

热门文章

  1. Java 语义网编程系列二: 本体
  2. 西安计算机二级12月,2017年12月计算机二级MS Office习题答案(一)
  3. aix创建oracle表空间,Oracle for AIX基于裸设备的表空间扩充步聚
  4. 转换为正整数_进制之间的转换
  5. java变量中不属于复合类型的数据类型是_2006新版JAVA题解(JAVA简单数据类型)...
  6. 昆仑通态如何连接sqlserver数据库_三菱FX5U 与昆仑通态触摸屏的连接操作步骤
  7. ashx获取input file 文件_通过Ajax方式上传文件(input file),使用FormData进行Ajax请求...
  8. war包怎么解压_微信猫和老鼠主题怎么搞?快来看
  9. 【grpc】[Python] A file with this name is already in the pool
  10. 学会这一招,轻松玩转 app 中混合应用自动化测试