zoukankan      html  css  js  c++  java
  • CF1110G

    第一次独自切掉 3100(前纪录是 2900),是在模拟赛里面做出来的,写个题解纪念一下。


    首先 Black 一定是不会赢的,这个感性理解一下就可以了。

    然后对于这种像个智力题一样的博弈,一般都是分成各种 corner case 讨论掉以覆盖掉所有情况。

    我们先不管有已经被涂了的点,那只会让 White 更牛逼。

    显而易见的是,有四度点的话 White 必胜。于是下面从讨论最大度数为 1~3。

    1 的话就不用说了吧……2 是一条链,可以发现如果没有一开始涂的颜色是一定不会赢的。考虑涂颜色:n=3 必须要有两个点被涂了;n>3 的话,你会发现如果有任何一个非叶子被涂了的话就赢定了,因为连续两个被图且两端都可扩展这个定式是必胜的。进一步,如果 n 是奇数且两端都被涂那也行,就一路小跳过去汇合。

    最大度数为 3 的时候。找到任意一个三度点,不难发现如果有两个儿子不是叶子那么必胜。于是先在只有 1 个儿子有儿子(0 个的话就停下来了)。那么就往下跑,如果当前最低点往下没有儿子就停了;如果有 1 个儿子,就线性地往下递归讨论;如果有 2 个儿子,算上爸爸它就是个三度点了,爸爸不是叶子,于是被迫停下。于是不难发现最大度数为 3 时只可能是两种情况:

    1. 两个三度点用一条链连起来。这个不涂色的话,不难发现 n 是奇数可以胜,否则需要任意涂一个;
    2. 一个三度点下面挂一条链。没涂色就萎掉了;否则如果在菊花和非叶的地方涂色是可以的,在叶子地方配上 n 是偶数的条件也是可以的。

    代码是码农活,就不贴了。

    珍爱生命,远离抄袭!
  • 相关阅读:
    VC++以及VS个版本比较 及 C++编译器比较
    这本书的封面
    json_encode(),json_deocde()用法说明
    循环匹配,一般用于多选列表选中状态
    js判断变量是否被定义
    js onload()事件调用方法
    js push使用方法
    iframe去掉边滚动条
    ajax上传文件(使用ajaxfileupload)
    基于url的权限控制
  • 原文地址:https://www.cnblogs.com/ycx-akioi/p/solution-cf1110g.html
Copyright © 2011-2022 走看看