求问:为什么弹栈之后要把x重新加进去?
查看原帖
求问:为什么弹栈之后要把x重新加进去?
536337
eb0ycn楼主2024/6/13 07:05

我本来是这样写:

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 了。

但我不理解啊,有大神告诉我吗?拜谢!

2024/6/13 07:05
加载中...