hdu 3530 Subsequence 单调队列
寻找一个区间,满足:其中的最大值减最小值在[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 单调队列相关推荐
- HDU - 3530 Subsequence(单调队列+思维)
题目链接:点击查看 题目大意:给出一段长度为n的序列,现在给出一个m和一个k,必须满足一段连续区间内的最大值与最小值的差值大于等于m并且小于等于k,问满足条件的连续区间的最大长度 题目分析:一开始看到 ...
- hdu 3401 Trade(单调队列优化dp)
hdu 3401 Trade(单调队列优化dp) 题意:lxhgww喜欢炒股票,他可以在第i天买入或者卖出若干张股票(一天只能买或者卖),两个交易日之间至少相隔w天,问他t天后最多能赚多少. 解题思路 ...
- HDU 5289 Assignment(单调队列)
题意:给T足数据,然后每组一个n和k,表示n个数,k表示最大同意的能力差,接下来n个数表示n个人的能力,求能力差在k之内的区间有几个 分析:维护一个区间的最大值和最小值,使得他们的差小于k,于是採用单 ...
- HDU 3530 Subsequence
这道题很有意思,需要巧妙地套用单调队列 首先我们要明确几件事情 1.假设我们现在知道序列(i,j)是符合标准的,那么如果第j+1个元素不比(i,j)最大值大也不比最小值小,那么(i,j+1)也是合法的 ...
- HDU 6319(单调队列)
传送门 题面: Problem A. Ascending Rating Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 524288/ ...
- Fxx and game HDU - 5945(单调队列优化dp)
思路:考虑反着dp,从dp[1]倒推dp[x] 因为dp[i]<=dp[j] j<i ,所以考虑用单调队列来优化. 除法不用考虑,考虑加法就行. 代码: #include <bi ...
- 入门经典_Chap08_题解总结:极角扫描法 滑动窗口 单调队列 单调栈
总结 本章主要关注一个重要的问题 – 单调队列和单调栈的使用 同时还有一些其他的问题,如扫描法,递归的思想, 构造, 分治, 二分等 知识点 单调队列 和 单调栈 题目 UVA - 1606 Am ...
- 单调队列————[USACO09MAR]向右看齐Look Up
先了解一下单调队列: 很明显的具有单调性 分为单调递增和单调递减两种,简单点讲就是维护队头为最大值或者为最小值 (建议采用双向队列 比较好写) 具体步骤:(这个是单调递减) 如果队列非空且当前值比队 ...
- 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年10万奖学金真的不算多!
- 细说Redis分布式锁
- 论MORMOT序列的JSON格式
- SAP HTML5 Application Repository
- 【HTML学习】——HTML常见标签属性和方法介绍
- 同时对view延时执行两个动画时候的现象
- 【英语学习】【WOTD】peer-to-peer 释义/词源/示例
- TortoiseSVN更改账号的方法
- bzoj1079 [SCOI2008]着色方案
- TFS无法连接:TF31002
- 重新获取新的IP地址的方法
- 唐奇安通道策略-python量化【backtrader回测】
- uint8_t范围_uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型 - 大总结
- R语言 Kmeans聚类、PAM聚类、层次聚类、EM聚类
- 自定义View时,用到Paint Canvas的一些温故,PropertyAnimation中的ObjectAnimator(动画三,“大大姐”的旋转跳跃)...
- [error]: Found option without preceding group in config file ....\my.ini at line:1
- kafka报错:The Cluster ID doesn‘t match stored clusterId Some in meta.properties
- python多轴图_python中用Matplotlib做多个纵轴 (多y轴)
- 基于STM32的贪吃蛇小游戏
- Potplayer倍速播放声音失真(回音)
热门文章
- Java 语义网编程系列二: 本体
- 西安计算机二级12月,2017年12月计算机二级MS Office习题答案(一)
- aix创建oracle表空间,Oracle for AIX基于裸设备的表空间扩充步聚
- 转换为正整数_进制之间的转换
- java变量中不属于复合类型的数据类型是_2006新版JAVA题解(JAVA简单数据类型)...
- 昆仑通态如何连接sqlserver数据库_三菱FX5U 与昆仑通态触摸屏的连接操作步骤
- ashx获取input file 文件_通过Ajax方式上传文件(input file),使用FormData进行Ajax请求...
- war包怎么解压_微信猫和老鼠主题怎么搞?快来看
- 【grpc】[Python] A file with this name is already in the pool
- 学会这一招,轻松玩转 app 中混合应用自动化测试