zoukankan      html  css  js  c++  java
  • D 和 V 的博弈游戏 [思维题]

    DVD 和 V 的博弈游戏


    Descriptionmathcal{Description}

    在这里插入图片描述在这里插入图片描述


    Solutionmathcal{Solution}

    前言: 这道题目状态的转移及代码的实现都较为简单, 但是证明过程却并不是那么轻松… 也许是我太蒻了吧

    这里先给出实现核心,具体可以先看后面详解.

    max_v[i],min_v[i]  i ,David,Van.设 max\_v[i], min\_v[i] 表示 i 为根的子树, David,Van所能取得的各自的最优值.
    :max_v[i] i Davidmax_v[i],.注: max\_v[i]表示在 i 子树中David能取到第max\_v[i]大的数,表排名.

    对给出的树执行 DFSDFS, 设当前节点为 ii,  toson[i] to ∈ son[i],
    叶子节点 初值 max_v[i]=min_v[i]=1,max\_v[i]=min\_v[i]=1,

    1. i Davidi 为David点,
      max_v[i] =max(max_v[to])max\_v[i] = max(max\_v[to])
      min_v[i]=toson[i]min_v[to]min\_v[i] =sum_{to ∈ son[i]} min\_v[to]
    2. i Vani 为Van点,
      max_v[i] =toson[i]max_v[to]max\_v[i] =sum_{to ∈ son[i]} max\_v[to]
      min_v[i] = min(min_v[to])min\_v[i] = min(min\_v[to])

    :接下来是详细的解答过程 :

    11如图1-1, 重点说明当前节点为VanVan时如何操作,


    I.:mathcal{I.} 情况 : 子树仅包括叶子节点
    首先要明确: ,  .color{red}{从树上任意节点出发向下,最后必定到达 子节点全部是叶子 的节点}.
    也就是图中画 color{red}{红框} 的子树.
    这个情况保证了 递归边界 的存在.
    此时直接 max_v[i]=min_v[i]=1max\_v[i]=min\_v[i]=1 即可, 对应上方的 初始化


    II.:mathcal{II.} 情况 : D子树包括一个叶子节点和一个 D 节点
    设该叶子节点的值为 tt, 最后取得 resres, 考虑 VanVan 如何走,

    1. t=maxt=max, 则 VanVan 必定会走 DD 节点, res=maxres=max_次.
    2. t=maxt=max_次, 此时 DD 节点子树可以取得 maxmax 值, 则 VanVan 会往 tt 走, res=maxres=max_次
    3. t=midt=mid, 此时 res=midres=mid.

    根据列举的三种情况, 发现 若不将 tt 的值置为 maxmax, 则答案不会更优.
    扩展到多个 叶子节点, 同理可得 红色字体成立.


    III.:mathcal{III.} 情况 : D子树包括两个 D 节点
    VanVan 走了红节点, 必定是因为 走绿节点会使得 resres 更大,
    又因为绿节点中取得最大值 max_tmax\_t 时, 需要 max_t1max\_t-1 个结点将其 ""color{red}{"垫上去"}.
    这也就说明了绿节点中所有的数值 比 红节点中 最大数值 要大,
    进而说明 红节点 取得的最大数值在这颗子树中的排名为 max_v[绿]+max_v[]max\_v[绿]+max\_v[红].

    推广到含多个 DD 节点的情况, 可以得出结论: max_v[i] =toson[i]max_v[to]max\_v[i] =sum_{to ∈ son[i]} max\_v[to] ,
    也就是上方的式子.

    如果仔细观察, 可以发现 II.情况mathcal{II.}III.情况mathcal{III.} 是可以看做同一类的,
    因此简化转移的式子.

    DavidDavid 节点的处理方式与 VanVan 的具有对称性, 这里不再赘述.

    ENDEND.


    Codemathcal{Code}

    
    
  • 相关阅读:
    HDU 5360 Hiking(优先队列)2015 Multi-University Training Contest 6
    多区域显示(6)-版面布局
    静态变量和成员变量的区别 && 成员变量和局部变量的区别
    java基础学习_面向对象(上)02_day07总结
    java基础学习_面向对象(上)01_day07总结
    面向对象的概述
    面向对象思想的引入
    Failed to create the Java Virtual Machine(zt)
    eclipse web开发Server配置
    javamail接收邮件(zt)
  • 原文地址:https://www.cnblogs.com/zbr162/p/11822595.html
Copyright © 2011-2022 走看看