码迷,mamicode.com
首页 > 其他好文 > 详细

bzoj2096[Poi2010]Pilots 单调队列

时间:2017-12-25 18:21:30      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:php   超过   整数   pac   href   blog   长度   stream   problems   

2096: [Poi2010]Pilots

Time Limit: 30 Sec  Memory Limit: 162 MB
Submit: 983  Solved: 513
[Submit][Status][Discuss]

Description

Tz又耍畸形了!!他要当飞行员,他拿到了一个飞行员测试难度序列,他设定了一个难度差的最大值,在序列中他想找到一个最长的子串,任意两个难度差不会超过他设定的最大值。耍畸形一个人是不行的,于是他找到了你。

Input

输入:第一行两个有空格隔开的整数k(0<=k<=2000,000,000),n(1<=n<=3000,000),k代表Tz设定的最大值,n代表难度序列的长度。第二行为n个由空格隔开的整数ai(1<=ai<=2000,000,000),表示难度序列。

Output

输出:最大的字串长度。

Sample Input

3 9
5 1 3 5 8 6 6 9 10

Sample Output

4
(有两个子串的长度为4: 5, 8, 6, 6 和8, 6, 6, 9.最长子串的长度就是4)

HINT

 

Source

 

维护两个单调队列 max min 搞搞就好

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cstring>
 4 #include<algorithm>
 5 #define N 3000005
 6 #define ll long long 
 7 using namespace std;
 8 int n,m,a[N],mx[N],mn[N];
 9 int l[]={1,1},r[]={0,0};
10 
11 char gc(){
12     static char s[1000000],*p1,*p2;
13     if(p1==p2)p2=(p1=s)+fread(s,1,1000000,stdin);
14     if(p1==p2)return EOF;
15     return *p1++; 
16 }
17 int read(){
18     int x=0;char ch=gc();
19     while(ch>9||ch<0)ch=gc();
20     while(ch>=0&&ch<=9)x=x*10+ch-0,ch=gc();
21     return x;
22 }
23 int main(){
24     m=read();n=read();
25     for(register int i=1;i<=n;i++)a[i]=read();
26     mx[++r[0]]=1;mn[++r[1]]=1;
27     register int h=1,t=1,ans=1;
28     while(t<n){
29         t++;
30         while(l[0]<=r[0]&&a[mx[r[0]]]<=a[t])r[0]--;
31         while(l[1]<=r[1]&&a[mn[r[1]]]>=a[t])r[1]--;
32         mx[++r[0]]=t;mn[++r[1]]=t;
33         int tmp=a[mx[l[0]]]-a[mn[l[1]]];
34         while(tmp>m){
35              h++;
36              while(mx[l[0]]<h)l[0]++;
37              while(mn[l[1]]<h)l[1]++;
38              tmp=a[mx[l[0]]]-a[mn[l[1]]];
39         }
40         if(t-h+1>ans)ans=t-h+1;
41     }
42     printf("%d\n",ans);
43     return 0;
44 }

 

bzoj2096[Poi2010]Pilots 单调队列

标签:php   超过   整数   pac   href   blog   长度   stream   problems   

原文地址:http://www.cnblogs.com/wsy01/p/8110376.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!