CF1889D Game of Stacks 题解
这题思维含量相当高,反正我是没想出来 qwq
题意就不复述了,咱们先考虑直接模拟题意,就是从每个栈都开始走一遍,然后看最后到哪。
注意:每次操作都无后效
考虑优化这个过程,我们发现从一个栈走的话,假设路上的所有栈都只走一遍,从这些栈开始的结果其实就跟起始栈是
一样的。因为我们是每经过一个栈弹出他的顶,每个栈都只经过一次且每次出发都初始化,就相当于每个栈都是还没弹出任何东
西的状态,走的路径自然一样。
所以这种情况一路上的所有栈的答案都是起始栈的答案。
那么如果存在环呢?这个其实也好办。
可以想象一下,无论从这个环的哪一部位开始,最终结果都是把这个环上所有的栈弹出栈顶。
那么我们就把环上的栈顶全弹了,并且把这个起始栈的栈顶也给弹掉换下一个。
实际上这道题就结束了,简单概括就是把环全弹了,然后一路上的栈的答案都是起始栈的答案。
代码不放了。