solution 求出每个点的sg函数,然后异或起来得到x,如果x为0那么就是先手必败,否则就是先手必胜。 如何求每个点sg函数?对于节点,,(i是j的祖先)。 对于第二问,也就是需要操作一步使得异或和为0。 如果我们把上的一个棋子挪到了上,那么的异或和就会变为,(v位于u的子树中)。也就是说我们要求每个子树u中有多少个v满足。这个我们可以用表示i这个异或值出现的次数,然后在dfs的过程中,在dfs一棵子树之前先记录一下,然后dfs这棵子树之后如果比原来大k的话,说明子树中有k个点满足条件。 复杂度 code /* * @Author: wxyww * @Date: 2020-05-08 20...