BZOJ 1342: [Baltic2007]Sound静音问题|单调队列
2016-01-22 07:41
281 查看
与BZOJ 2096一样
只不过让他们区间长度等于m判断一下就行
只不过让他们区间长度等于m判断一下就行
#include<set> #include<map> #include<ctime> #include<queue> #include<cmath> #include<cstdio> #include<vector> #include<cstring> #include<cstdlib> #include<iostream> #include<algorithm> #define T 1000006 #define MX 1e9 #define pa pair<int,int> using namespace std; struct D{int x,pos;}mn[T],mx[T]; int m,c,n,ans=0; int sc() { int i=0,f=1; char c=getchar(); while(c>'9'||c<'0'){if(c=='-')f=-1;c=getchar();} while(c>='0'&&c<='9')i=i*10+c-'0',c=getchar(); return i*f; } void print(int x) { char s[20]; int l=0; while(x)s[++l]=x%10+'0',x/=10; while(l)putchar(s[l--]);puts(""); } int main() { int lx=1,rx=0,ln=1,rn=0,L=0,flag=0; n=sc(),m=sc(),c=sc(); for(int i=1;i<=n;i++) { int x=sc(); while(rx>=lx&&mx[rx].x<=x)rx--; while(rn>=ln&&mn[rn].x>=x)rn--; mx[++rx]=mn[++rn]=(D){x,i}; while(mx[lx].x-mn[ln].x>c) { if(mx[lx].pos<mn[ln].pos)L=mx[lx].pos,lx++; else L=mn[ln].pos,ln++; } if(L<=i-m)print(i-m+1),flag=1; } if(!flag)puts("NONE"); return 0; }
相关文章推荐
- 浅谈单调队列、单调栈
- sjtu online judge 1034 二哥的金链
- [BZOJ1499][NOI2005][DP+优化]瑰丽华尔兹
- hdu4193 hoj3107
- HDU3530
- 【bzoj1047】【单调队列】【HAOI2007】理想的正方形
- 2015 Multi-University Training Contest 1 Hdu 5289 Assignment
- HDU 3415 (单调队列优化DP)
- poj2823Sliding Window
- bzoj 1717: [Usaco2006 Dec] Milk Patterns
- 【Jason's_ACM_解题报告】Defense Lines
- poj 3415 后缀数组+单调队列
- poj 1821 dp+单调队列
- zoj 3699 单调队列
- 单调队列的应用
- HDU 5289 Assignment
- hdu 3415(单调队列)
- hdu 4193(单调队列)
- HDU 3415 Max Sum of Max-K-sub-sequence
- HDU 3530 Subsequence