牛客国庆集训派对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; }