单调队列 HDU 3530 Subsequence
来源:互联网 发布:禁止上网软件 编辑:程序博客网 时间:2024/05/22 08:17
要注意的一点是:如果差值要大于k则要在已有的单调队列中删去最大或者最小值;
如果小于m,在已有的单调队列中改动是没有用的,应该引进新的数值:
#include<bits/stdc++.h> using namespace std;int num[100000+10];int main(){ int n,m,k; while(scanf("%d%d%d",&n,&m,&k)!=EOF){ for(int i=1;i<=n;i++){ scanf("%d",&num[i]); } deque<int>maxq; deque<int>minq; int l=1; int r=1; int ans=0; while(r<=n){ while(!minq.empty()&&num[r]<minq.back()) minq.pop_back(); minq.push_back(num[r]); while(!maxq.empty()&&num[r]>maxq.back()) maxq.pop_back(); maxq.push_back(num[r]); while(!maxq.empty()&&!minq.empty()&&maxq.front()-minq.front()>k){ if(num[l]==maxq.front()) maxq.pop_front(); if(num[l]==minq.front()) minq.pop_front(); l++; } if(!maxq.empty()&&!minq.empty()&&maxq.front()-minq.front()>=m) ans=max(ans,r-l+1); r++; } printf("%d\n",ans); } return 0;}
0 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 单调队列优化
- 使用PR_GET_NO_NEW_PRIVS 避免安全漏洞
- Android Studio Failed to complete Gradle execution
- Time类中的运算符重载(3)-前置++,后置++
- Linux下计划任务 crontab
- Java用SAX和DOM解析器解析Xml
- 单调队列 HDU 3530 Subsequence
- 【GDOI2014模拟】旅行(水法)
- ViewPropertyAnimator源码分析
- AndroidEventBus使用----基本操作(1)
- hiho 98 搜索一 24点
- eclipse中新建Java工程的三个JRE选项区别
- Java单例设计模式的几种写法
- Java float保留两位小数或多位小数
- JavaScript 笔记