hdu 3530 Subsequence 单调队列
来源:互联网 发布:.net 数组包含 编辑:程序博客网 时间:2024/05/21 17:56
寻找一个区间,满足:其中的最大值减最小值在[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 //单调队列
- hdu 3530 Subsequence 单调队列
- Hdu 3530 Subsequence 单调队列
- hdu 3530 Subsequence(单调队列)
- 单调队列 HDU 3530 Subsequence
- hdu 3530 Subsequence 单调队列
- hdu 3530 Subsequence 单调队列
- HDU - 3530 Subsequence 单调队列
- hdu 3530 Subsequence 单调队列
- HDU 3530 --- Subsequence 单调队列
- hdu 3530 Subsequence(DP+单调队列优化)
- HDU 3530 Subsequence(单调队列)
- hdu 3530 Subsequence dp+单调队列
- HDU 3530 Subsequence (dp+单调队列)
- hdu 3530 Subsequence(dp单调队列优化)
- HDU 3530 Subsequence(单调队列)
- Subsequence - HDU 3530 单调队列优化
- Make git automatically remove trailing whitespace before committing
- JDK1.6
- 关于oracle字符集--总结,补遗以及问题
- 整理关于汇编的东西(二)
- Javascript原型
- hdu 3530 Subsequence 单调队列
- (一)、一步一步学GTK+之开篇
- MYSQL查看及修改表使用的存储引擎
- 最近都没时间更新博客
- Java费布拉契数列的应用
- (二)、一步一步学GTK+之窗口
- C语言文件操作
- GNU ARM汇编伪操作(Directives) 命令集
- Singletons in Cocoa, are they evil?