传送门:hdu5299
题解
扫描线处理圆之间的关系后构造森林,满足每个点对应的圆严格包含其子树中的点对应的圆。
将森林的每个根连向虚根:问题转变为每次删除一条边及对应的子树,直到只剩下虚根,判断最优策略下先手是否必胜。
考虑一条链的
S
G
SG
SG值即为边数,若树的形态是从根连出去几条链,那么这颗树的
S
G
SG
SG值为所有连出去的链的边数的异或和。
将每个点标为以它为根的子树的
S
G
SG
SG值。因为链的
S
G
SG
SG值等于边数,所以可以将
S
G
SG
SG值为
x
x
x的子树看做一条有
x
x
x条边的链,于是可以向上算贡献了:
设叶子结点
S
G
SG
SG值为
0
0
0。
非叶结点
S
G
SG
SG值为所有儿子结点
S
G
SG
SG值
+
1
+1
+1的异或和(链长+1)。