BZOJ 2096
2016-07-06 20:21
127 查看
BZOJ 2096
【分析】
这道题就TM是个坑
给一段序列,求一段最长子序列,使序列中最大值-最小值<=k
分别用两个递增和递减的队列维护。枚举右端点,根据条件不断删除左端点,然后取min。
fffff**k
【代码】
【分析】
这道题就TM是个坑
给一段序列,求一段最长子序列,使序列中最大值-最小值<=k
分别用两个递增和递减的队列维护。枚举右端点,根据条件不断删除左端点,然后取min。
fffff**k
【代码】
#include<iostream> #include<cstdio> #include<algorithm> #define fo(i,j,k) for(i=j;i<=k;i++) using namespace std; const int T=3000005; int n,k,l1,r1,l2,r2,ans,t=1,a[T],q1[T],q2[T]; int main() { int i; scanf("%d%d",&k,&n); fo(i,1,n) scanf("%d", &a[i]); fo(i,1,n) { while(l1<r1 && a[i]<=a[q1[r1-1]]) r1--; while(l2<r2 && a[i]>=a[q2[r2-1]]) r2--; q1[r1++]=q2[r2++] = i; while(a[q2[l2]]-a[q1[l1]]>k) if(q2[l2]>q1[l1]) t=q1[l1]+1,l1++; else t=q2[l2]+1,l2++; ans=max(ans,i-t+1); } printf("%d\n",ans); return 0; }
相关文章推荐
- 浅谈单调队列、单调栈
- sjtu online judge 1034 二哥的金链
- poj2823 单调队列 ------scanf/printf/G++/C++
- [BZOJ1499][NOI2005][DP+优化]瑰丽华尔兹
- hdu4193 hoj3107
- HDU3530
- 【bzoj1047】【单调队列】【HAOI2007】理想的正方形
- poj2823(单调队列入门)
- 2015 Multi-University Training Contest 1 Hdu 5289 Assignment
- HDU 3415 (单调队列优化DP)
- 【Monotonic-queue】【dp】【Segment-tree】【STL】Codeforces 487B - Strip
- poj2823Sliding Window
- bzoj 1717: [Usaco2006 Dec] Milk Patterns
- HDU 4193 Non-negative Partial Sums 【单调队列】
- 【Jason's_ACM_解题报告】Defense Lines
- poj 3415 后缀数组+单调队列
- poj 1821 dp+单调队列
- zoj 3699 单调队列
- 单调队列的应用
- 单调队列学习