BZOJ 2276: [Poi2011]Temperature|单调队列

来源:互联网 发布:seo研究中心官方网站 编辑:程序博客网 时间:2024/04/29 07:17

维护最低温度的单调不升序列

#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 1e9using namespace std;int L[T],R[T];int q[T];int 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;}int main(){    n=sc();    for(int i=1;i<=n;i++)L[i]=sc(),R[i]=sc();    int l=1,r=0;    for(int i=1;i<=n;i++)    {        while(l<=r&&R[i]<L[q[l]])l++;        if(l<=r)ans=max(ans,i-q[l]+1);        int t=i; while(l<=r&&L[i]>=L[q[r]])t=q[r],r--;        L[t]=L[i],q[++r]=t;    }    cout<<ans;    return 0;}
0 0
原创粉丝点击