第一次独自切掉 3100(前纪录是 2900),是在模拟赛里面做出来的,写个题解纪念一下。
首先 Black 一定是不会赢的,这个感性理解一下就可以了。
然后对于这种像个智力题一样的博弈,一般都是分成各种 corner case 讨论掉以覆盖掉所有情况。
我们先不管有已经被涂了的点,那只会让 White 更牛逼。
显而易见的是,有四度点的话 White 必胜。于是下面从讨论最大度数为 1~3。
1 的话就不用说了吧……2 是一条链,可以发现如果没有一开始涂的颜色是一定不会赢的。考虑涂颜色:n=3 必须要有两个点被涂了;n>3 的话,你会发现如果有任何一个非叶子被涂了的话就赢定了,因为连续两个被图且两端都可扩展这个定式是必胜的。进一步,如果 n 是奇数且两端都被涂那也行,就一路小跳过去汇合。
最大度数为 3 的时候。找到任意一个三度点,不难发现如果有两个儿子不是叶子那么必胜。于是先在只有 1 个儿子有儿子(0 个的话就停下来了)。那么就往下跑,如果当前最低点往下没有儿子就停了;如果有 1 个儿子,就线性地往下递归讨论;如果有 2 个儿子,算上爸爸它就是个三度点了,爸爸不是叶子,于是被迫停下。于是不难发现最大度数为 3 时只可能是两种情况:
代码是码农活,就不贴了。
原文:https://www.cnblogs.com/ycx-akioi/p/solution-cf1110g.html