CF2062E1 The Game (Easy Version) 题解
如果存在 不在 的子树内且 ,则最大的 一定是可行的点。
此时,选择了这个点后,对方将无法选出一个点使得消除后剩下的点大于选择的点,因此可行。如果选择不出这样一个点,则无解。
首先想到枚举 ,并要求在 时间内完成判断。看到这个时间复杂度以及最大值,我想到的是线段树(BIT 也可以的)。
为了实现查询,要想办法使得区间连续,为了实现这个目标,可以使用 DFS 序,令其为 ,这时查询的最大值可以分成 中的两段,前一段是 ,为了描述后一段,定义当前节点 的子树中 最大的点的下一个点为 ,于是第二段为 , 的求法可以在 DFS 中完成,详见代码。
提示:注意可能取到空区间,线段树中注意判断!
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 shicj's blog!
评论