题目描述
给定一棵n个点有根树,每个点要么是黑色,要么是白色。每一次可以选择一个白点,将它到根的路径染黑。无法操作者输,问最终先手胜负。
分析
设fx为x子树的SG值。
那么枚举子树内的任意一个白点进行转移,分裂开若干棵子树,要求其异或值的mex。
求
那么我们每一次就直接类似一整个trie异或上一个数,然后合并若干个trie就可以得到这个新点的trie了。
时间复杂度O(n log n)
本文探讨了一道关于有根树的博弈问题,通过定义状态生成函数(SG函数)并结合trie树的数据结构来实现高效的解决方案。具体地,文章介绍了一个有效的方法来计算树中从某个白色节点到根节点路径上的异或值,并利用这些值确定游戏的最终胜者。
给定一棵n个点有根树,每个点要么是黑色,要么是白色。每一次可以选择一个白点,将它到根的路径染黑。无法操作者输,问最终先手胜负。
设fx为x子树的SG值。
那么枚举子树内的任意一个白点进行转移,分裂开若干棵子树,要求其异或值的mex。
求
那么我们每一次就直接类似一整个trie异或上一个数,然后合并若干个trie就可以得到这个新点的trie了。
时间复杂度O(n log n)

被折叠的 条评论
为什么被折叠?
