zoukankan      html  css  js  c++  java
  • [Codevs 1421]秋静叶&秋穣子(最大-最小博弈)

    题目:http://codevs.cn/problem/1421/

    分析:有向树上的最大-最小博弈

    先手与后手的策略不同:

    先手A:让对方取得尽量少的前提下,自己取得尽量大

    后手B:让自己取得尽量多的前提下,对方取得尽量少

    设f[x][0]表示以x的子树的先手最优值,f[x][1]表示以x的子树的后手最优值,注意这里的先手、后手是相对而言的

    那么树形DP

    1、若x节点的深度为奇数,此时轮到A取数

      f[x][0]=a[x]+f[k][1]

      f[x][1]=f[k][0]

      其中k是x的儿子节点中max(f[k][0])取最大时候的k,若f[k][0]相同,则取f[k][1]最小的

      因为x的深度为奇数,所以A是以x为根的子树的先手,B是以x为根的子树的后手;B是以所有x的儿子为根的子树的先手,而A则是以所有x的儿子为根的子树的后手

      k的深度是偶数,所以k一定是B取,于是按照B的策略,B要让f[k][0]最多的前提下,让f[k][1]最小,这样得到的k作为B的决策,这就是第一个式子的含义

      而B作为x为根节点的子树的后手,它不能取x点的值,所以f[x][1]=f[k][0]

    2、若x节点的深度为偶数,此时轮到B取数

      f[x][0]=a[x]+f[k][1]

      f[x][1]=f[k][0]

      其中k是x的儿子节点中min(f[k][1])取最小时候的k,若f[k][1]相同,则取f[k][0]最大的

      含义同理

  • 相关阅读:
    How to Automate IIS 7 Configuration with .NET
    windows phone 学习
    Redis VS. Memcached
    ROWNUM使用方法
    摘自----聊聊盛大的经验值
    理解Sql语句
    Odp.net 动态创建变量in
    ORACLE PLSQL DEVELOPER 中显示科学计数法
    http error 500.22 internal server error
    Resharper8 visual studio 中文版 快捷键无法使用
  • 原文地址:https://www.cnblogs.com/wmrv587/p/4396977.html
Copyright © 2011-2022 走看看