训练记录PART7
Posted jiangshibiao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了训练记录PART7相关的知识,希望对你有一定的参考价值。
再不更博客我就……!!!……吃cjb!
T112-2018 Bytedance-MW Wintercamp Selection Contest C
题意:给出一棵 (N(leq 10^6)) 个点的带边权的树。甲乙两人轮流博弈,每次可以选择将一条边 (e) 的边权 (w_e) 减一。若减完后变成 (0),则割掉不包含根的那个连通块。双方执最优策略,问先手是否必胜。如果必胜的话,还要输出所有可行的第一步删边方案。
题解:如果边权 (w_e=1),有一个很简单的结论:子树 $sg_x=(sg_{y_1}+1) oplus (sg_{y_2}+1) dots $。这个可以用归纳法来证明。
此题中边权可以大于 (1)。事实上,还有一个一般性的基于图的做法。链接可参考这里。
主要思想是基于对原图进行等价变换。
等价变换①:偶环可以“缩成”一个点(偶环里的边将变成这个点的子环)。
等价变换②:自环可以拆成一个新的儿子。
直接将此题的树看成图,可以发现子树 (sg_y) 对 (sg_x) 的贡献是 (sg_y oplus [w_{x,y}
mid 2]) 。特殊情况是 (sg_y+1[w_{x,y}=1])。
第二问相当于,我们要将某一条边减少一,使根的 (sg) 变为 (0)。直接 (DFS) 下去,每次维护需要将当前的 (sg) 变成多少才能合法。
以上是关于训练记录PART7的主要内容,如果未能解决你的问题,请参考以下文章