我本来是这样写:
if(flg[x]){
ans[++cnt].emplace_back(x);
do flg[anstk[top]]=0,ans[cnt].emplace_back(anstk[top]);
while(anstk[top--]!=x);
}
else flg[anstk[++top]=x]=1;
然鹅只有 54 分……
但我改成这样(参考第二篇题解):
if(flg[x]){
ans[++cnt].emplace_back(x);
do flg[anstk[top]]=0,ans[cnt].emplace_back(anstk[top]);
while(anstk[top--]!=x);
flg[x]=1,anstk[++top]=x;
}
else flg[anstk[++top]=x]=1;
也就是把 x 重新加了进去,就 AC 了。
但我不理解啊,有大神告诉我吗?拜谢!