牛客国庆集训派对Day1 J Princess Principal 括号 栈维护

#include<cstdio>
int a[1000010],q[1000010],L[1000010],top,n,m,Q;
int main(){
    scanf("%d%d%d",&n,&m,&Q);
    for(int i=1;i<=n;i++)scanf("%d",a+i);
    for(int i=1;i<=n;i++){
        if(!top)q[++top]=i;
        else{
            if(a[i]/2==a[q[top]]/2&&a[i]==a[q[top]]+1)top--; //来自某dalao的代码 对于入栈的每一个括号 如果匹配到则一同退栈,维护每个括号可以匹配的区间,如果栈为空,则说明该括号匹配全局,如果非空,则该括号匹配从栈顶符号到自身的区间
            else q[++top]=i;
        }
        L[i]=q[top];
    }
    for(int i=1;i<=Q;i++){
        int x,y;
        scanf("%d%d",&x,&y);
        if((y-x)&1){
            if(L[y]==L[x-1]) puts("Yes");
            else puts("No");
        }
        else puts("No");
    }
    return 0;
}

 

posted @ 2018-10-01 19:38  BIack_Cat  阅读(117)  评论(0编辑  收藏  举报