分享一下鄙人的想法:
我们可以很轻松地处理完走不到根节点的军队,走到深度最小就好。
对于可以走到根节点的情况,我们不妨这里有两个单调不减序列,⟨a⟩,⟨b⟩。
ai 就是所有可以走到根节点军队的走到根节点后的剩余时间。
bi 表示这种军队深度最小的祖先(不是根节点)到根节点的距离或者是还没有堵上的根节点的子节点到它的距离。
如果一个军队硬是要走,并且要走过根节点的话,我们不妨理解为用一个大于等于 bi 的 aj 去抵消它。如果它仅仅只是向上走到深度最小的非根节点,那么它的剩余时间肯定就没了,但是会少一个 bi,并且这种情况不需要 aj≥bi。(当然了,这样的讨论是建立在 bi 存在的前提下,如果一个军队走到深度最小的非根祖先时发现这个子树已经被堵好了,我们不妨就让它走过根节点)我们的目的是把⟨b⟩消灭殆尽,如果真的存在可以用小于等于 bj 的 ai 去抵消它,那我们不妨抵消就好。