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]最大的

      含义同理

  • 相关阅读:
    Consul常用命令
    ECharts 避免变窄
    TP3.2 日期默认格式
    新订单提示效果
    php 按照字典序排序 微信卡券签名算法用到
    td宽度自适应 窄的地方自动收缩
    git 删除本地分支,删除远程分支
    分页Model
    chrome表单自动填充如何取消
    tp3.2 如何比较两个字段
  • 原文地址:https://www.cnblogs.com/wmrv587/p/4396977.html
Copyright © 2011-2022 走看看