CF1889D Game of Stacks 题解

这题思维含量相当高,反正我是没想出来 qwq

题意就不复述了,咱们先考虑直接模拟题意,就是从每个栈都开始走一遍,然后看最后到哪。

注意:每次操作都无后效

考虑优化这个过程,我们发现从一个栈走的话,假设路上的所有栈都只走一遍,从这些栈开始的结果其实就跟起始栈是

一样的。因为我们是每经过一个栈弹出他的顶,每个栈都只经过一次且每次出发都初始化,就相当于每个栈都是还没弹出任何东

西的状态,走的路径自然一样。

所以这种情况一路上的所有栈的答案都是起始栈的答案。

那么如果存在环呢?这个其实也好办。

可以想象一下,无论从这个环的哪一部位开始,最终结果都是把这个环上所有的栈弹出栈顶。

那么我们就把环上的栈顶全弹了,并且把这个起始栈的栈顶也给弹掉换下一个。

实际上这道题就结束了,简单概括就是把环全弹了,然后一路上的栈的答案都是起始栈的答案。

代码不放了。

posted @ 2025-03-09 15:38  「癔症」  阅读(18)  评论(0)    收藏  举报