Codeforces Global Round 1 G. Tree-Tac-Toe 题解

Codeforces Global Round 1 G. Tree-Tac-Toe 题解

题目

链接在这里。

题目大意

有一棵树上面有 n n n个结点,其中有些结点已经有了颜色(白色),有些还没有。现在有两个人,第一个人可以将任意一个没有染色过的点染色成白色,第二个人可以将任意一个没有染色过的点染色成黑色,每人轮流操作一次。当任意三个相邻结点都处于同颜色,则该颜色的人获胜(白:第一个人,黑:第二个人)。两人都绝顶聪明,请问最终谁会获胜(White,Black,Draw)。

解题方法

正解:树上博弈论。
我们分类讨论。
首先设 a i a_i ai表示 i i i结点的度数。
我们可以发现,黑方不可胜。
我们先假设所有点都没有初始颜色。

  1. 当有一 a i a_i ai大于等于 4 4 4,则肯定是白方胜利。举例如下:
    Codeforces Global Round 1 G. Tree-Tac-Toe 题解_第1张图片
    首先染 i i i结点,然后对方一定会将一个与它相连的结点染色。接着我们再染一个相邻结点,对方即使再染一个相邻结点,但我们还有一个结点,所以白方必胜。
    染色策略:
    Codeforces Global Round 1 G. Tree-Tac-Toe 题解_第2张图片
    Codeforces Global Round 1 G. Tree-Tac-Toe 题解_第3张图片
    Codeforces Global Round 1 G. Tree-Tac-Toe 题解_第4张图片
    Codeforces Global Round 1 G. Tree-Tac-Toe 题解_第5张图片
    Codeforces Global Round 1 G. Tree-Tac-Toe 题解_第6张图片

  1. 当有一 a i a_i ai等于 3 3 3,且有至少两个相邻结点不为叶子,则白方胜利。举例如下:
    Codeforces Global Round 1 G. Tree-Tac-Toe 题解_第7张图片
    我们首先染 i i i点,对方肯定会染与其相邻的结点。我们染未染色的相邻结点(非叶结点),对方肯定会染最后一个相邻结点或者是与刚才那个结点相邻的结点。 然后我们就染未染过的点就胜了。白方必胜。
    染色策略:
    Codeforces Global Round 1 G. Tree-Tac-Toe 题解_第8张图片
    Codeforces Global Round 1 G. Tree-Tac-Toe 题解_第9张图片
    Codeforces Global Round 1 G. Tree-Tac-Toe 题解_第10张图片
    Codeforces Global Round 1 G. Tree-Tac-Toe 题解_第11张图片
    Codeforces Global Round 1 G. Tree-Tac-Toe 题解_第12张图片

  1. n < 3 n<3 n<3,肯定平局,因为不足 3 3 3个。

  1. 如果只有 2 2 2个度数为 3 3 3的点,其他点的度数都是小于 3 3 3,且 n n n为奇数,白方必胜。举例如下:
    Codeforces Global Round 1 G. Tree-Tac-Toe 题解_第13张图片
    我们先染 2 2 2号点,那么对方必然染 1 1 1号点(否则会输)。然后我们再染 4 4 4号点,对方必然染 3 3 3号点。然后我们再染 5 5 5号点就行了,最后一定可以获胜。白方必胜。
    染色策略:
    Codeforces Global Round 1 G. Tree-Tac-Toe 题解_第14张图片
    Codeforces Global Round 1 G. Tree-Tac-Toe 题解_第15张图片
    Codeforces Global Round 1 G. Tree-Tac-Toe 题解_第16张图片
    Codeforces Global Round 1 G. Tree-Tac-Toe 题解_第17张图片
    Codeforces Global Round 1 G. Tree-Tac-Toe 题解_第18张图片
    Codeforces Global Round 1 G. Tree-Tac-Toe 题解_第19张图片
    Codeforces Global Round 1 G. Tree-Tac-Toe 题解_第20张图片
    也就是当 n n n为奇数时,我们显然偶数号结点,然后对方会染奇数号,最后剩余一个结点我们将它染色,然后就会必胜。

  1. 考虑操作之前已有染色结点。当 n = 3 n=3 n=3,其中已染色的白点已经大于等于 2 2 2时,白方必胜;否则平局。

  1. 如果有一个结点操作之前为白色,我们将它拆分为四个结点。举例如下:
    Codeforces Global Round 1 G. Tree-Tac-Toe 题解_第21张图片
    其中原来的点为 1 1 1,然后构造 2 ′ , 3 ′ , 4 ′ 2',3',4' 2,3,4,其中我们只需存 2 ′ 2' 2的度数,因为下面的度数不影响答案。
    拆点过后,只需做一遍 1 , 2 , 4 1,2,4 1,2,4即可(见上)。

这道题目其实不难,只要用笔在草稿纸上写一下情况并分类讨论即可。时间复杂度 O ( ∑ n ) O(\begin{aligned}\sum n\end{aligned}) O(n)

总结

以后做博弈论这类的题目,思路是分类讨论。

你可能感兴趣的:(博弈论,题解,树)